Rabbit v0.2.1 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
Please see Rabbit.Consumer.after_connect/2
for details.
A callback used to fetch the list of consumers under the supervisor.
Please see Rabbit.Consumer.handle_error/1
for details.
Please see Rabbit.Consumer.handle_message/1
for details.
Please see Rabbit.Consumer.init/1
for details.
Starts a consumer supervisor process.
Stops a consumer supervisor process.
Link to this section Types
consumers()
View Source
consumers() :: [Rabbit.Consumer.options()]
consumers() :: [Rabbit.Consumer.options()]
t()
View Source
t() :: Supervisor.name()
t() :: Supervisor.name()
Link to this section Callbacks
after_connect(channel, queue)
View Source
(optional)
after_connect(channel :: AMQP.Channel.t(), queue :: String.t()) :: :ok
after_connect(channel :: AMQP.Channel.t(), queue :: String.t()) :: :ok
Please see Rabbit.Consumer.after_connect/2
for details.
consumers()
View Source
consumers() :: consumers()
consumers() :: consumers()
A callback used to fetch the list of consumers under the supervisor.
This callback must return a list of Rabbit.Consumer.options/0
handle_error(message)
View Source
handle_error(message :: Rabbit.Message.t()) ::
{:ack, Rabbit.Message.t()}
| {:ack, Rabbit.Message.t(), Rabbit.Consumer.action_options()}
| {: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()
handle_error(message :: Rabbit.Message.t()) :: {:ack, Rabbit.Message.t()} | {:ack, Rabbit.Message.t(), Rabbit.Consumer.action_options()} | {: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_error/1
for details.
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()
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.
init(options)
View Source
(optional)
init(options :: Rabbit.Consumer.options()) ::
{:ok, Rabbit.Consumer.options()} | :ignore
init(options :: Rabbit.Consumer.options()) :: {:ok, Rabbit.Consumer.options()} | :ignore
Please see Rabbit.Consumer.init/1
for details.
start_link(connection, server_opts)
View Source
start_link(
connection :: Rabbit.Connection.t(),
server_opts :: GenServer.options()
) :: Supervisor.on_start()
start_link( connection :: Rabbit.Connection.t(), server_opts :: GenServer.options() ) :: Supervisor.on_start()
Starts a consumer supervisor process.
stop()
View Source
stop() :: :ok
stop() :: :ok
Stops a consumer supervisor process.