[rabbitmq-discuss] Fwd: question on the faq

Gordon Sim gsim at redhat.com
Tue Jan 6 13:10:13 GMT 2009

Tim Coote wrote:
> On 6 Jan 2009, at 11:51, Alexis Richardson wrote:
>> On Tue, Jan 6, 2009 at 10:42 AM, Tim Coote <tim 
>>> Using what I'd call the normal semantics of a transaction, I'd define
>>> a unit of work that booked all of my components of my holiday in one
>>> block and I'd know whether everything were ok or not. It also makes  
>>> it
>>> very obvious that I need to think about the legal contracts that I'm
>>> 'committing' to so that I can form suitable compensating  
>>> transactions.
>>> Using the AQMP definition, all I know is that the booking requests
>>> were delivered, and possibly not even that they'd all been delivered.
>> Right and here one stumbles across the difference between TX, DTX and
>> idempotent delivery.  But - correct me if I am wrong - wouldn't
>> Gordon's use case help with this?
> I'm not sure. I didn't get the gory details. But I don't think that it  
> addresses the issue as I think it's concerned with the control  
> mechanisms, not the content.  

With an atomic transaction, if I consume a message (m1) from one queue 
(lets call it qA) and publish it (perhaps in modified form, denoted m2) 
to another queue (lets call that qB) then either m1 remains on qA and m2 
is *not* on qB or m1 has been removed from qA and m2 *is* on qB.

Or in the example Ben gave either all n messages of a transactionally 
published batch are on the queue or none of them are.

Hope that clarifies it a bit.

More information about the rabbitmq-discuss mailing list