Example
June 10, 2020 ยท View on GitHub
Example
defmodule ConsumerBasicSetup do
@behaviour GenRMQ.Consumer
def init() do
[
connection: "amqp://guest:guest@localhost:5672",
queue: "example_queue",
exchange: "example_exchange",
routing_key: "routing_key.#",
prefetch_count: "10"
]
end
def handle_message(%GenRMQ.Message{} = message), do: GenRMQ.Consumer.ack(message)
def handle_error(%GenRMQ.Message{} = message, _reason), do: GenRMQ.Consumer.reject(message, false)
def consumer_tag(), do: "consumer-tag"
def start_link(), do: GenRMQ.Consumer.start_link(__MODULE__, name: __MODULE__)
end
Outcome:
- durable
example_exchange.deadletterexchange created or redeclared - durable
example_queue_errorqueue created or redeclared and bound toexample_exchange.deadletterexchange - durable topic
example_exchangeexchange created or redeclared - durable
example_queuequeue created or redeclared and bound toexample_exchangeexchange - queue
example_queuehas a deadletter exchange set toexample_exchange.deadletter - every
handle_messagecallback will be executed in a separate supervised task. If the task failshandle_error/2will be called - on failed rabbitmq connection it will wait for a bit and then reconnect