[rabbitmq-discuss] Clustering Internals

Matthew Sackman matthew at rabbitmq.com
Thu Mar 24 23:53:25 GMT 2011


On Thu, Mar 24, 2011 at 05:16:50PM -0600, Jason J. W. Williams wrote:
> The side-effect for publishing being that the channel on the server side can
> still be in the process of routing the message while the client has already
> moved on to the next publish command.  So if the server node dies, without
> transactions or publisher confirms the client has no idea that the message
> has gone poof before it got routed. Would that be a correct description?

Yes. And this is fundamentally why you can't have exactly-once delivery:
either you have fire and forget, in which case msgs can be lost in
transit to the broker, or you use transactions or confirms, at which
point the tx.commit_ok or the confirm back to the client can be lost
thus making the client retransmit messages to a non-failed broker where
those msgs actually were received and processed by the broker, it's just
the client never received the notification that that had occurred.

Matthew


More information about the rabbitmq-discuss mailing list