Replies: 2 comments 2 replies
-
When an AMQP client connection is lost with pending acks, RabbitMQ will re-enqueue the messages, so something else must be going on here. I am assuming you are using the latest version of Erlang (25.1), RabbitMQ (3.10.8), and .NET client (
|
Beta Was this translation helpful? Give feedback.
-
When connection (actually, consumer channel) is closed for any reason, RabbitMQ automatically requeues all deliveries pending acknowledgement. At least one client IIRC, Bunny, uses a versioned approach where every recovery bumps client "epoch" tracks max delivery tag provided to the For example,
I am not suggesting that this client should do that but Bunny has been doing that for some 9 years, with few bugs found and fixed. So the approach is not crazy and not too difficult to reason about. Or you can simply handle those ack exceptions. You can also observe connection recovery events in your application code for extra logging or decision making information. |
Beta Was this translation helpful? Give feedback.
-
When use AsyncEventingBasicConsumer with manual acknowledgements, we call
BasicAck
orBasicNack
end of event.But if connection lost when handling event, call
BasicAck
orBasicNack
will throw exception.After connection recovery, rabbitmq server show message still in unacked mode.
Specially if I use prefetch count with channel, it will not release count.
Beta Was this translation helpful? Give feedback.
All reactions