Weddell v0.1.0-alpha.1 Weddell.Client View Source

A persistent process responsible for interacting with Pusub over GRPC.

Link to this section Summary

Types

Option value used when connecting a client

Option values used when connecting clients

A cursor used for pagination of lists

An RPC error

Option value used when retrieving lists

Option values used when retrieving lists

Option values used when publishing messages

Options used when publishing messages

Option values used when pulling messages

Options used when pulling messages

Option values used when creating a subscription

Options used when creating a subscription

t()

A Weddell client

Functions

Returns a specification to start this module under a supervisor

Connect to a Pub/Sub server and return a client

Invoked when the server is started. start_link/3 or start/3 will block until it returns

Start the client process and connect to Pub/Sub using settings in the application config

Link to this section Types

Link to this type connect_option() View Source
connect_option() ::
  {:host, String.t()}
  | {:port, pos_integer()}
  | {:scheme, :http | :https}
  | {:ssl, [:ssl.ssl_option()]}

Option value used when connecting a client

Link to this type connect_options() View Source
connect_options() :: [connect_option()]

Option values used when connecting clients

A cursor used for pagination of lists

An RPC error

Link to this type list_option() View Source
list_option() :: {:max, pos_integer()} | {:cursor, cursor()}

Option value used when retrieving lists

Link to this type list_options() View Source
list_options() :: [list_option()]

Option values used when retrieving lists

Link to this type publish_option() View Source
publish_option() :: {:attributes, %{optional(String.t()) => String.t()}}

Option values used when publishing messages

Link to this type publish_options() View Source
publish_options() :: [publish_option()]

Options used when publishing messages

Link to this type pull_option() View Source
pull_option() ::
  {:return_immediately, boolean()} | {:max_messages, pos_integer()}

Option values used when pulling messages

Link to this type pull_options() View Source
pull_options() :: [pull_option()]

Options used when pulling messages

Link to this type subscription_option() View Source
subscription_option() ::
  {:ack_deadline, pos_integer()} | {:push_endpoint, String.t()}

Option values used when creating a subscription

Link to this type subscription_options() View Source
subscription_options() :: [subscription_option()]

Options used when creating a subscription

Link to this type t() View Source
t() :: %Weddell.Client{channel: GRPC.Channel.t(), project: String.t()}

A Weddell client

Link to this section Functions

Returns a specification to start this module under a supervisor.

See Supervisor.

Link to this function connect(project, opts \\ []) View Source
connect(project :: String.t(), opts :: connect_options()) :: {:ok, t()}

Connect to a Pub/Sub server and return a client.

Example

Weddell.Client.connect("project-name",
                      scheme: :https,
                      host: "pubsub.googleapis.com",
                      port: 443,
                      ssl: [cacerts: :certifi.cacerts()])
#=> {:ok, client}

Options

  • scheme - The scheme to use when connecting to the Pub/Sub service. (default: :https)
  • host - The Pub/Sub host to connect to. This defaults to Google’s Pub/Sub service but is useful for connecting to a local Pub/Sub emulator (default: “pubsub.googleapis.com”)
  • port - The port on which to connect to the host. (default: 443)
  • ssl - SSL settings to be used when connecting with the :https scheme. See ssl_option() in the ssl documentation. (default: [cacerts: :certifi.cacerts()])

Invoked when the server is started. start_link/3 or start/3 will block until it returns.

args is the argument term (second argument) passed to start_link/3.

Returning {:ok, state} will cause start_link/3 to return {:ok, pid} and the process to enter its loop.

Returning {:ok, state, timeout} is similar to {:ok, state} except handle_info(:timeout, state) will be called after timeout milliseconds if no messages are received within the timeout.

Returning {:ok, state, :hibernate} is similar to {:ok, state} except the process is hibernated before entering the loop. See c:handle_call/3 for more information on hibernation.

Returning {:ok, state, {:continue, continue}} is similar to {:ok, state} except that immediately after entering the loop the c:handle_continue/2 callback will be invoked with the value continue as first argument.

Returning :ignore will cause start_link/3 to return :ignore and the process will exit normally without entering the loop or calling c:terminate/2. If used when part of a supervision tree the parent supervisor will not fail to start nor immediately try to restart the GenServer. The remainder of the supervision tree will be started and so the GenServer should not be required by other processes. It can be started later with Supervisor.restart_child/2 as the child specification is saved in the parent supervisor. The main use cases for this are:

  • The GenServer is disabled by configuration but might be enabled later.
  • An error occurred and it will be handled by a different mechanism than the Supervisor. Likely this approach involves calling Supervisor.restart_child/2 after a delay to attempt a restart.

Returning {:stop, reason} will cause start_link/3 to return {:error, reason} and the process to exit with reason reason without entering the loop or calling c:terminate/2.

Callback implementation for GenServer.init/1.

Start the client process and connect to Pub/Sub using settings in the application config.

Example

In your application config:

config :weddell,
  scheme: :http,
  host: "localhost",
  port: 8085,
  project: "test-project"

Settings

  • project - The required Google Cloud project that will be used for all calls made by this client.
  • scheme - The scheme to use when connecting to the Pub/Sub service. (default: :https)
  • host - The Pub/Sub host to connect to. This defaults to Google’s Pub/Sub service but is useful for connecting to a local Pub/Sub emulator (default: “pubsub.googleapis.com”)
  • port - The port on which to connect to the host. (default: 443)
  • ssl - SSL settings to be used when connecting with the :https scheme. See ssl_option() in the [ssl documentation] (http://erlang.org/doc/man/ssl.html). (default: [:cacerts: :certifi.cacerts()])