Managing Transactions

All transactions initiated by client applications are tracked by the
broker. These can be local Message Queue transactions or distributed transactions
managed by a distributed transaction manager.

Each transaction is identified by a unique 64-bit Message Queue transaction identifier. Distributed transactions also have a distributed transaction identifier (XID), up
to 128 bytes long, assigned by the distributed transaction manager. Message Queue maintains
the association between its own transaction identifiers and the corresponding XIDs.

The imqcmdlisttxn subcommand
lists the transactions being tracked by a broker:

imqcmd list txn

This lists all transactions on the broker, both local and distributed.
For each transaction, it shows the transaction ID, state, user name, number
of messages and acknowledgments, and creation time. Example 7–7 shows an example of the resulting output.

If a broker fails, it is possible that a distributed transaction could
be left in the PREPARED state without ever having been
committed. Until such a transaction is committed, its messages will not be
delivered and its acknowledgments will not be processed. Hence, as an administrator,
you might need to monitor such transactions and commit them or roll them back
manually. For example, if the broker’s imq.transaction.autorollback property (see Table 16–2)
is set to false, you must manually commit or roll back
non-distributed transactions and unrecoverable distributed transactions found
in the PREPARED state at broker startup, using the Command
utility’s committxn or rollbacktxn subcommand:

imqcmd commit txn -ntransactionID

imqcmd rollback txn -ntransactionID

For example, the following command commits the transaction listed in Example 7–8:

imqcmd commit txn -n64248349708800

Note –

Only transactions in the PREPARED state can be committed . However,
transaction in the STARTED, FAILED, INCOMPLETE, COMPLETE, and PREPARED states
can be rolled back. You should do so only if you know that the transaction
has been left in this state by a failure and is not in the process of being
committed by the distributed transaction manager.