[rabbitmq-discuss] .NET API - Using PublishConfirms to get Reliability

Michael Klishin mklishin at gopivotal.com
Wed Feb 26 07:02:59 GMT 2014

On 26 Feb 2014, at 06:03, Marty Wasznicky <marty.wasznicky at neudesic.com> wrote:

> First one is that Rabbit MQ is losing a few messages if both servers in the cluster are shut down.

I’m fairly certain it’s not RabbitMQ that “loses messages”. They simply never get to RabbitMQ.

Your OS does not detect network peer failure immediately, it takes time, however little.
RabbitMQ .NET client thus is writing data to the socket in the time window that OS thinks RabbitMQ server
is alive while it already isn’t.

Library authors can do only one thing to mitigate this: write messages to disk (write-ahead log, or WAL) first, then publish,
and remove acknowledged messages, and recover + republish when RabbitMQ node stops being reachable.

RabbitMQ .NET client does not have this feature. It’s currently developer’s responsibility to handle such cases.


Software Engineer, Pivotal/RabbitMQ

More information about the rabbitmq-discuss mailing list