Skip to end of metadata
Go to start of metadata

Stomp uses named transactions so that many transactions can concurrently occur at the same time.

The client specifies the name and it is unique to that client.

so:

BEGIN
transaction: tx1

^@

then you can ack or send using the transaction

ACK
message: ID:19283:wheeeee:1234
transaction: tx1

^@
SEND
destination: /queue/a
transaction: tx1

hello queue a!
^@
ABORT
transaction: tx1

^@

Would "undo" the ack and send

  • No labels

1 Comment

  1. It would be helpful to have a little more details on what an implementation needs to handle as far as transactions go.  Perhaps much of this can be left up to implementation developers; however, I can imagine that users would find some of this clarified here.  A few specific questions I have (I apologize in advance if these are naive):

    • Should the implementation continue delivering messages to a reliable (ack=true) client during a transaction?  The example above shows a single ACK in a transaction; however, I imagine that if the broker continued to deliver messages to this client before transaction was committed, those additional ACKs could be included in the transaction?  This makes sense to me; however, I'm not sure how many servers implement it like this.
    • (again related to reliable clients) When a transaction is aborted, is it expected that the rolled-back ACK'd messages will be retransmitted to the same client?  (I suspect this might be something that an implementation might choose to define).

    Thanks!