Hi, I want to handle messages from multiple RabbitMQ queues in one GenServer. So with following code:
def init(_) do
...
AMQP.Queue.declare(channel, "q1")
AMQP.Queue.declare(channel, "q2")
AMQP.Basic.consume(channel, "q", nilm no_ack: true)
AMQP.Basic.consume(channel, "q", nilm no_ack: true)
...
end
def handle_info({:basic_deliver, payload, _meta}, state) do
IO.inspect(payload)
{:noreplay, state}
end
Is where any way to detect inside handle_info
from wich queue message received?
Thanks!
egze
2
Try to inspect the meta parameter.
Thank you!
IO.inspect(meta)
in my case gives me:
%{
app_id: :undefined,
cluster_id: :undefined,
consumer_tag: "amq.ctag-BFsF3LZZU_oFnf15FdzgFw",
content_encoding: :undefined,
content_type: :undefined,
correlation_id: :undefined,
delivery_tag: 1,
exchange: "",
expiration: :undefined,
headers: :undefined,
message_id: :undefined,
persistent: false,
priority: :undefined,
redelivered: false,
reply_to: :undefined,
routing_key: "hello",
timestamp: :undefined,
type: :undefined,
user_id: :undefined
}
I think, I can use consumer_tag
for this purposes.
Solved
1 Like