The Artemis protocol does not support AMQP transactions properly.
In AMQP a transaction control link can be created from within a session, this control link is then used to create and control transactions. Artemis supports local transactions, single transaction per session, single session per transaction.
A declare packet is sent from the client over the control link to instantiate a transaction, receive a transaction id. In order to enrol a message within a transaction the sender must set the the State of the transfer packet to "TransactionState(txn-id=xxx)". However, Artemis does not use the TransactionState to decide when to enrol messages in a transaction, instead all subsequent messages sent over the same session as the control link, are automatically enrolled within the transaction. This is wrong.