HareMq.Consumer
(hare_mq v1.4.0)
Copy Markdown
Macro that injects a single-process RabbitMQ consumer GenServer.
Usage
defmodule MyApp.Worker do
use HareMq.Consumer,
queue_name: "my_queue", # required
exchange: "my_exchange"
def consume(message) do
IO.inspect(message)
:ok
end
endOptions
| Option | Required | Description |
|---|---|---|
queue_name | yes | Main queue name |
routing_key | no | Defaults to queue_name |
exchange | no | AMQP exchange |
prefetch_count | no | QoS prefetch (default 1) |
delay_in_ms | no | Retry delay in ms (default from app config or 10_000) |
delay_cascade_in_ms | no | List of per-attempt delays, e.g. [1_000, 5_000] |
retry_limit | no | Max retries before dead-lettering (default from app config or 15) |
connection_name | no | Named connection for multi-vhost use (default {:global, HareMq.Connection}) |
stream | no | true to consume a stream queue (default false) |
stream_offset | no | Stream start position: "first", "last", "next" (default), integer offset, or %DateTime{} |
When stream: true the consumer declares an x-queue-type: stream queue,
skips delay/dead-letter setup, and always acks messages (no retry loop).