gen_rmq v1.3.0 GenRMQ.Publisher behaviour View Source

A behaviour module for implementing the RabbitMQ publisher

Link to this section Summary

Functions

Returns a specification to start this module under a supervisor

Starts GenRMQ.Publisher with given callback module linked to the current process

Callbacks

Invoked to provide publisher configuration

Link to this section Functions

Returns a specification to start this module under a supervisor.

See Supervisor.

Link to this function publish(publisher, message, routing_key \\ "", metadata \\ []) View Source
publish(
  publisher :: atom() | pid(),
  message :: String.t(),
  routing_key :: String.t(),
  metadata :: Keyword.t()
) :: :ok | {:error, reason :: :blocked | :closing}

Publishes given message

publisher - name or PID of the publisher

message - raw payload to deliver

routing_key - optional routing key to set for given message

metadata - optional metadata to set for given message. Keys that

        are not allowed in metadata are moved under the `:headers`
        field. Do not include a `:headers` field here: it will be
        created automatically with all non-standard keys that you have
        provided.

Examples:

GenRMQ.Publisher.publish(TestPublisher, "{"msg": "hello"})
Link to this function start_link(module, options \\ []) View Source
start_link(module :: module(), options :: Keyword.t()) ::
  {:ok, pid()} | {:error, term()}

Starts GenRMQ.Publisher with given callback module linked to the current process

module- callback module implementing GenRMQ.Publisher behaviour

Options

  • :name - used for name registration

Return values

If the publisher is successfully created and initialized, this function returns {:ok, pid}, where pid is the PID of the publisher. If a process with the specified publisher name already exists, this function returns {:error, {:already_started, pid}} with the PID of that process.

Examples:

GenRMQ.Publisher.start_link(TestPublisher, name: :publisher)

Link to this section Callbacks

Link to this callback init() View Source
init() :: [exchange: String.t(), uri: String.t(), app_id: atom()]

Invoked to provide publisher configuration

Return values

Mandatory:

uri - RabbitMQ uri

exchange - the name of the target exchange. If does not exist it will be created

Optional:

app_id - publishing application ID

Examples:

def init() do
  [
    exchange: "gen_rmq_exchange",
    uri: "amqp://guest:guest@localhost:5672"
    app_id: :my_app_id
  ]
end