HareMq.DynamicConsumer (hare_mq v1.4.0)

Copy Markdown

Macro that injects a horizontally-scalable RabbitMQ consumer pool.

Starts a HareMq.DynamicSupervisor that manages a configurable number of worker processes. Workers can be scaled manually or automatically via HareMq.AutoScaler.

Usage

defmodule MyApp.Workers do
  use HareMq.DynamicConsumer,
    queue_name: "tasks",
    consumer_count: 4

  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 per worker (default 1)
consumer_countnoNumber of workers to start (default 1)
auto_scalingnoHareMq.AutoScalerConfiguration — enables auto-scaling
delay_cascade_in_msnoList of per-attempt delays, e.g. [1_000, 5_000]
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 each worker declares an x-queue-type: stream queue, skips delay/dead-letter setup, and always acks messages (no retry loop).