Details
-
Bug
-
Status: Resolved
-
Minor
-
Resolution: Fixed
-
2.23.0
-
None
-
Unknown
Description
I am consuming a RabbitMQ queue as following:
from("rabbitmq://localhost:5672?username=test&password=test&declare=false&queue=q&autoAck=false&threadPoolSize=1&exclusiveConsumer=true") .to("log:receive");
When I restart the RabbitMQ broker, no messages are longer received in the log handler.
According the management interface, all pending messages are in UNACKED state. This means that they are transmitted to the consumer, but not acknowledged. In other words, Camel was able to restore the connection after the restart, but fails to deliver to the log handler and acknowledge them afterwards.
I did not test this, but I believe the consumer will eventually crash due to OOM.
example
Please find a self-contained example on https://github.com/pbillen/playground-camel-13267.You need a (local) Docker daemon to run this. Use it as following:
- Start with `mvn clean install -U`.
- You notice in the logging that every 500ms, a message is sent and received. You can also log into the administrator interface on http://localhost:15672 with login/password `test`. You will see the message pass through every 500ms. Great!
- Now restart the RabbitMQ broker. Typically, find the container identifier with `docker ps` and then execute `docker restart <identifier>`.
- After restart, you notice that every 500ms a message is sent, but not received. You can also log into the administrator interface and see that all messages are into the UNACKED state.