Rabbit v0.2.0 Rabbit.ConsumerSupervisor behaviour View Source

A RabbitMQ consumer supervisor process.

This enables starting and supervising multiple Rabbit.Consumer processes with ease.

Example

# This is a connection
defmodule MyConnection do
  use Rabbit.Connection
end

# This is a consumer supervisor
defmodule MyConsumers do
  use Rabbit.ConsumerSupervisor

  # Callbacks

  # Setup the consumers you want
  def consumers do
    [
      [queue: "myqueue1", prefetch_count: 10],
      [queue: "myqueue2", prefetch_count: 10]
    ]
  end

  # Perform any runtime configuration per consumer
  def init(opts) do
    {:ok, opts}
  end

  # Perform exchange or queue setup per consumer
  def after_connect(channel, queue) do
    AMQP.Queue.declare(channel, queue)

    :ok
  end

  # Handle messages per consumer
  def handle_message(message) do
    {:ack, message}
  end

  # Handle errors that occur per consumer
  def handle_error(message) do
    {:nack, message}
  end
end

# Start the connection
MyConnection.start_link()

# Start the consumers
MyConsumers.start_link(MyConnection)

Please see the documentation for Rabbit.Consumer for more details.

Link to this section Summary

Callbacks

A callback used to fetch the list of consumers under the supervisor.

Please see Rabbit.Consumer.init/1 for details.

Starts a consumer supervisor process.

Stops a consumer supervisor process.

Link to this section Types

Link to this section Callbacks

Link to this callback

after_connect(channel, queue) View Source (optional)
after_connect(channel :: AMQP.Channel.t(), queue :: String.t()) :: :ok

Please see Rabbit.Consumer.after_connect/2 for details.

A callback used to fetch the list of consumers under the supervisor.

This callback must return a list of Rabbit.Consumer.options/0

Please see Rabbit.Consumer.handle_error/1 for details.

Link to this callback

handle_message(message) View Source
handle_message(message :: Rabbit.Message.t()) ::
  {:ack, Rabbit.Message.t()}
  | {:ack, Rabbit.Message.t(), Keyword.t()}
  | {:nack, Rabbit.Message.t()}
  | {:nack, Rabbit.Message.t(), Rabbit.Consumer.action_options()}
  | {:reject, Rabbit.Message.t()}
  | {:reject, Rabbit.Message.t(), Rabbit.Consumer.action_options()}
  | any()

Please see Rabbit.Consumer.handle_message/1 for details.

Link to this callback

init(options) View Source (optional)
init(options :: Rabbit.Consumer.options()) ::
  {:ok, Rabbit.Consumer.options()} | :ignore

Please see Rabbit.Consumer.init/1 for details.

Link to this callback

start_link(connection, server_opts) View Source
start_link(
  connection :: Rabbit.Connection.t(),
  server_opts :: GenServer.options()
) :: Supervisor.on_start()

Starts a consumer supervisor process.

Stops a consumer supervisor process.