[rabbitmq-discuss] Fwd: question on the faq

Alexis Richardson alexis.richardson at cohesiveft.com
Mon Jan 5 15:35:02 GMT 2009


On Mon, Jan 5, 2009 at 2:02 PM, Carl Trieloff <cctrieloff at redhat.com> wrote:
> My view has always been that the TX class implied atomicity (and the
> original author confirmed that was his intention), but the text of the
> 0-9 (and earlier) spec(s) did not make that explicit.
> Needing to specify ACID with the word transaction is redundant in my view.
> I would go as far as to say, a transaction that is not Atomic is NOT a
> transaction, but rather just some or other variation
> of an acknowledgment pattern and should not be called a transaction.

In fairness, Tim's question was about *CI*...

During the 0-9-1 discussions the group came to the realisation that
either (a) TX qua 0-8/9 was more naturally seen as a generalised
acknowledgeable group of work, or (b) that the semantics of TX needed
to be amended.  Such semantic amendments were of course out of scope
for 0-9-1, *and* with 1.0 'in view' for 2009, *and* absent a full
account of failure in 0-8/9, the former view (a) prevailed.  So 0-9-1
has its own view of what a TX transaction is.

We would welcome further spec clarifications that fix TX, remove
ambiguities, and decrease the potential gap between 0-8/9 type
implementations.  We would also implement, in RabbitMQ, improvements
to TX that the AMQP community collectively demands at the spec level.

More generally, it is dangerous to assume that a messaging system not
subject to full XA type constraints is like a database in every way.
In 0-8/9 AMQP, TX can only guarantee atomicity in the presence of
failures if every broker operation is a transaction in the same sense
as in a database.  So for example in 0-8/9, individual message
delivery is *transactional* and *atomic*, but queue failure is not
guaranteed to be so because the queue lifecycle is simply *undefined*
in 0-8/9.

If queue lifecyle were defined and its operations were atomic, then
that would make it is easier for TX to cover all atomicity cases.

Even more generally, some examples of non-atomic "transactions" do exist:




More information about the rabbitmq-discuss mailing list