[rabbitmq-discuss] atomic transactions

gaillard jonathan.gaillard at dominionenterprises.com
Thu Mar 22 03:39:59 GMT 2012

Hello everyone,

I have need to use transactions in the following way:
-get a message (m1) from queue A
-transforms the message and create new message (m2)
-publish m2 to queue B
-ack m1
-commit the transaction (includes ack and publish)

Which i believe in all failure scenarios should result in possibly two
m1 on queue A, nothing on queue B
m2 on queue B, nothing on queue A

Is this what will happen in rabbit 2.7 or 2.8?

Note: the need above has nothing to do with how to detect that m1 got
delivered a second time or ensuring that cant happen (which of course it
could and should if it dies while transforming)

What I wouldn't expect to see would be m1 on queue A AND m2 on queue B

As a simple example of a situation that I believe requires support of the
above, is a single queue with one or two message on it. Multiple consumers
on the queue that process each message and then put it back on the queue to
be picked up again. After a crash there shouldn't be two copies of the same
message on the queue.

By having a transaction that just picks up and publishes back to the same
queue and commits, I would think that example could be achieved with rabbit
2.7 or 2.8 from everything I have read in the mailing list, is that correct?

Thanks !!!

View this message in context: http://old.nabble.com/atomic-transactions-tp33544596p33544596.html
Sent from the RabbitMQ mailing list archive at Nabble.com.

More information about the rabbitmq-discuss mailing list