Use of Transactions

A transaction is a guarantee that all messages produced in a transacted
session and all messages consumed in a transacted session will be either processed
or not processed (rolled back) as a unit.

Message Queue supports both local and distributed transactions.

A message produced or acknowledged in a transacted session is slower
than in a nontransacted
session for the following reasons:

Additional information must be stored with each produced message.

In some situations, messages in a transaction are stored when
normally they would not be (for example, a persistent message delivered to
a topic destination with no subscriptions would normally be deleted, however,
at the time the transaction is begun, information about subscriptions is not
available).

Information on the consumption and acknowledgment of messages
within a transaction must be stored and processed when the transaction is
committed.