io.vertx.pgclient.pubsub

## Interface PgSubscriber

-     public interface PgSubscriber

  A class for managing subscriptions using `LISTEN/UNLISTEN` to Postgres channels.

  The subscriber manages a single connection to Postgres.

- - ### Method Summary

    All Methods Static Methods Instance Methods Abstract Methods Default Methods
    Modifier and Type | Method and Description
    --- | ---
    `PgConnection` | `actualConnection()`
    `PgChannel` | `channel(String name)` Return a channel for the given `name`.
    `void` | `close()` Close the subscriber, the retry policy will not be invoked.
    `boolean` | `closed()`
    `PgSubscriber` | `closeHandler(Handler<Void> handler)` Set an handler called when the subscriber is closed.
    `PgSubscriber` | `connect(Handler<AsyncResult<Void>> handler)` Connect the subscriber to Postgres.
    `PgSubscriber` | `reconnectPolicy(java.util.function.Function<Integer,Long> policy)` Set the reconnect policy that is executed when the subscriber is disconnected.
    `static PgSubscriber` | `subscriber(Vertx vertx, PgConnectOptions options)` Create a subscriber.

- - ### Method Detail

    - #### subscriber

          static PgSubscriber subscriber(Vertx vertx,
                                         PgConnectOptions options)

      Create a subscriber.
      Parameters:
        `vertx` - the vertx instance
        `options` - the connect options
      Returns:
        the subscriber

    - #### channel

          PgChannel channel(String name)

      Return a channel for the given `name`.
      Parameters:
        `name` - the channel name

        This will be the name of the channel exactly as held by Postgres for sending notifications. Internally this name will be truncated to the Postgres identifier maxiumum length of `(NAMEDATALEN = 64) - 1 == 63` characters, and prepared as a quoted identifier without unicode escape sequence support for use in `LISTEN/UNLISTEN` commands. Examples of channel names and corresponding `NOTIFY` commands:
        - when `name == "the_channel"`: `NOTIFY the_channel, 'msg'`, `NOTIFY The_Channel, 'msg'`, or `NOTIFY "the_channel", 'msg'` succeed in delivering a message to the created channel
        - when `name == "The_Channel"`: `NOTIFY "The_Channel", 'msg'`, succeeds in delivering a message to the created channel
      Returns:
        the channel

    - #### connect

          PgSubscriber connect(Handler<AsyncResult<Void>> handler)

      Connect the subscriber to Postgres.
      Parameters:
        `handler` - the handler notified of the connection success or failure
      Returns:
        a reference to this, so the API can be used fluently

    - #### reconnectPolicy

          PgSubscriber reconnectPolicy(java.util.function.Function<Integer,Long> policy)

      Set the reconnect policy that is executed when the subscriber is disconnected.

      When the subscriber is disconnected, the `policy` function is called with the actual number of retries and returns an `amountOfTime` value:
      - when `amountOfTime < 0`: the subscriber is closed and there is no retry
      - when `amountOfTime == 0`: the subscriber retries to connect immediately
      - when `amountOfTime > 0`: the subscriber retries after `amountOfTime` milliseconds

      The default policy does not perform any retries.
      Parameters:
        `policy` - the policy to set
      Returns:
        a reference to this, so the API can be used fluently

    - #### closeHandler

          PgSubscriber closeHandler(Handler<Void> handler)

      Set an handler called when the subscriber is closed.
      Parameters:
        `handler` - the handler
      Returns:
        a reference to this, so the API can be used fluently

    - #### actualConnection

          PgConnection actualConnection()

      Returns:
        the actual connection to Postgres, it might be `null`

    - #### closed

          boolean closed()

      Returns:
        whether the subscriber is closed

    - #### close

          void close()

      Close the subscriber, the retry policy will not be invoked.

Copyright © 2021 Eclipse. All rights reserved.