I've got a RabbitMQ consumer that's no longer receiving messages that are sent to a topic exchange, even though it's (apparently) correctly bound.
My consumer claims to be using queue "amq.gen-arQ5ArflOq80ZcFOgs75iQ", which is apparently bound correctly:
$ sudo rabbitmqctl list_bindings | grep arQ exchange amq.gen-arQ5ArflOq80ZcFOgs75iQ queue amq.gen-arQ5ArflOq80ZcFOgs75iQ []
production exchange amq.gen-arQ5ArflOq80ZcFOgs75iQ queue production.models.updates []
If I publish a message using rabbitmqadmin, it doesn't arrive at this consumer:
$ rabbitmqadmin publish exchange=production routing_key=production.models.updates payload='{"command":"ping"}'
Message published
I have another consumer (on another host), which is correctly receiving messages with the same routing key.
However, if I send the message direct:
$ rabbitmqadmin publish routing_key=amq.gen-arQ5ArflOq80ZcFOgs75iQ payload='{"command":"ping"}'
Message published
...then it arrives correctly at the consumer.
I'm using RabbitMQ 3.6.3, on Erlang R16B03 on Ubuntu 14.04 on AWS; this is a three node cluster.
The consumer is written in Erlang, using amqp_client and rabbit_common 3.1.1. If I kill the consumer (so that it gets restarted by the supervisor, and reconnects), then messages start flowing again.
This happens fairly regularly after a (presumed) network glitch causes the consumer to reconnect, without restarting the whole client daemon.
How can I diagnose this further? How can I fix it?
I lied above; I actually had two broken consumers, so if anyone's got any ideas, I can attempt to diagnose with the still-broken one.
Roger.