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
end

Options

OptionRequiredDescription
queue_nameyesMain queue name
routing_keynoDefaults to queue_name
exchangenoAMQP exchange
prefetch_countnoQoS prefetch (default 1)
delay_in_msnoRetry delay in ms (default from app config or 10_000)
delay_cascade_in_msnoList of per-attempt delays, e.g. [1_000, 5_000]
retry_limitnoMax retries before dead-lettering (default from app config or 15)
connection_namenoNamed connection for multi-vhost use (default {:global, HareMq.Connection})
streamnotrue to consume a stream queue (default false)
stream_offsetnoStream 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).