[rabbitmq-discuss] Transactions & Routing

Jason J. W. Williams jasonjwwilliams at gmail.com
Wed Apr 6 22:47:22 BST 2011

Hi Matthias,

> Could you describe what problem you are trying to solve?

The desire is generally for durable messages to survive a broker
crash. For that to happen Rabbit has to persist the message to disk.
Since publishes return no status, that leaves ambiguity as to whether
a durable message has been persisted to disk should  a broker crash
occur directly after publishing. My understanding with transactions
were that they were how to confirm that Rabbit had the message in
custody safely. Should a broker crash occur before the transaction
returned a success, you knew you should republish. However, if the
crash occurred after the transaction returned success then you could
trust that Rabbit had persisted it to disk and move on to the next

Since I now understand that inside of Rabbit and exchange is not
router but simply a routing table, the fact that the exchange is
durable makes no guarantees a durable message in the middle of being
routed will survive a broker crash. The only place it will be
persisted is the queue, so the guarantee I think people are looking
for with a transaction is that the durable message has made it far
enough into Rabbit's custody to be persisted to disk.

Does that help?


More information about the rabbitmq-discuss mailing list