In 0-10 AMQP has full DTX and TX. we assume a reliable transport. AMQP
does not yet have a UDP transport so the behavior for UDP is undefined,
especially with txn. Any UDP L1 AMQP binding would need frame
reliability to be able to support txns (we could do this, but it is
currently unspecified.)
Arnuad Simon, Mark Little, Gordon Sim drove most of the transaction work
with Cisco in AMQP 0-10. In terms of txns spanning queue.declare etc,
the spec supports/makes that possible. Others on the list can tell you
want is implemented on Qpid trunk. In short it should be full dtx, tx
and XA resource. I believe some of the client dtx work is still in
process on trunk.
dtx for 0-10 is here https://jira.amqp.org/jira/browse/AMQP-4
tx is existing in the spec docs.
"2. Is the protocol currently assuming a reliable transport layer (TCP,
SCTP, etc) and no unreliable connection (say, UDP)? If yes, will the
later releases work on including unreliable transport layer protocols""
-- > AMQP has a framework that will allow us to make UDP reliable, this
work has not been done in the spec(provision has been made so it can be
done), but if done then we 'should' be able to support txns on UDP.
Do you have an interest in UDP, and if so why?
Hope that helps
Carl.
Goel, Tanmay wrote:
Hi,
1. I have a basic question about transactions in AMQP. What exactly
does a transaction include/mean? For example, does it include the
administrative features like creation of queues, exchanges, etc that
will be auto-deleted if the client aborts the transaction. I'm not
entirely clear about this, so I'm just trying to understand and figure
out possibilities. The spec says that messages and acknowledgments are
covered in a transaction. What would happen if the publisher sends a
message to the broker/queue, consumer receives (reads it from the
queue) and processes it, sends an ack to the broker and then the
publisher decides to abort the transaction? How can this transaction
be atomic and/or rolled-back since the message is already gone?
Please help me understand this. I'm trying to understand the scope of
a transaction.
2. Is the protocol currently assuming a reliable transport layer (TCP,
SCTP, etc) and no unreliable connection (say, UDP)? If yes, will the
later releases work on including unreliable transport layer protocols?
Thanks,
Tanmay