extreme_system v0.2.2 Extreme.System.RabbitMQ.Supervisor View Source

Configuration examples:

[

{:publisher, MyApp.Rabbit.ExchangePublisher, [
   {:exchange, %{
                  name:    "exchange_name",
                  type:    :topic,
                  options: [durable: true]
                }}
]},
{:publisher, MyApp.Rabbit.QueuePublisher, [
   {:queue,    %{
                  name:    "queue_name_to_publish",
                  options: [
                             durable:   true,
                             arguments: [{"x-dead-letter-exchange",    :longstr, "dead"}, 
                                         {"x-dead-letter-routing-key", :longstr, "dead.my_app.queue_name_to_publish"}]
                           ]
                }}
]},
{:listener, MyApp.Rabbit.SomeQueueListener, %{
   event_processor: MyApp.SomeQueueProcessor,
   exchange: %{
     name:    "exchange_name",
     type:    :topic,
     options: [durable: true]
   },
   queue: %{
     name:         "some_queue_listener",
     qos_opts:     [prefetch_count: 100],
     declare_opts: [
       exclusive: false, 
       durable: true, 
       arguments: [
         {"x-dead-letter-exchange", :longstr, "dead"}, 
         {"x-dead-letter-routing-key", :longstr, "dead.my_app.some_queue_listener"}
       ]
     ],
     bind_opts: [routing_key: "#"],
   }
}}

]

Minimal required configuration (when exchanges and queues are declared somewhere else) is:

[

{:publisher, MyApp.Rabbit.ExchangePublisher, [
   {:exchange, %{ name: "exchange_name" }}
]},
{:publisher, MyApp.Rabbit.QueuePublisher, [
   {:queue,    %{ name: "queue_name_to_publish" }}
]},
{:listener,  MyApp.Rabbit.SomeQueueListener, %{
   event_processor: MyApp.SomeQueueProcessor,
   exchange:        %{ name: "exchange_name" },
   queue:           %{ name: "some_queue_listener" }
}}

]

When listener receives message it calls event_processor.process(route, payload, [redelivered?: redelivered?]=options) function. If it returns :ok, messages is acked. On {:error, :discard_message} message is nacked. On anything else message is returned for redelivery.

Link to this section Summary

Link to this section Functions

Link to this function start_link(prefix, bus_settings, configuration) View Source