broadway_rabbitmq icon indicating copy to clipboard operation
broadway_rabbitmq copied to clipboard

Documentation for setting up dead-letter exchange is inaccurate and/or incomplete

Open fireproofsocks opened this issue 1 year ago • 3 comments

If the example from https://hexdocs.pm/broadway_rabbitmq/BroadwayRabbitMQ.Producer.html#module-dead-letter-exchanges is run, it generates errors:

[error] GenServer Rarebit.Pipelines.Inspection.Broadway.Producer_0 terminating
** (stop) exited in: :gen_server.call(#PID<0.492.0>, {:subscribe, {:"basic.consume", 0, "my_queue.dlx", "", false, false, false, false, []}, #PID<0.407.0>}, 70000)
    ** (EXIT) shutdown: {:server_initiated_close, 404, "NOT_FOUND - no queue 'my_queue.dlx' in vhost '/'"}

This appears to be because the the my_queue.dlx is not yet created yet -- this makes sense because the code that creates that queue is in the :after_connect option. The errors appear only on the 1st start; subsequent restarts do not seem to have this issue.

Secondly, the code in the handle_message/3 is incomplete -- it should demonstrate a full working example, e.g.

  def handle_message(_processor, message, _context) do
    Broadway.Message.failed(message, "Error handling message; this should trigger a send to the dead letter queue")
  end

fireproofsocks avatar Oct 05 '24 15:10 fireproofsocks