Transactionality in mediations
We can configure a mediation handler to run within a global transaction.
A global transaction is required when:
- Mediating and routing messages must be coordinated into a single transaction.
- Several mediation handlers in a mediation handler list must be coordinated into a single transaction.
Set the Global transaction property ensures transactional integrity between a mediation that accesses the resources owned by other resource managers, and the messaging engine.
A global transaction encompasses all the mediation operations that are run within the bus for the duration of the mediation. The global transaction ends when the mediation completes its processing.
Whether the Global transaction property is set to True or False, a mediation either performs all its operations on a message, or none of them.
If a mediation transaction rolls back, all transactional changes also roll back. When the transaction rolls back, the mediated message remains on the pre-mediated part of the bus destination and becomes eligible to be mediated again. The re-delivery count assigned to a message increments each time a mediation transaction rolls back. If the re-delivery count exceeds the limit configured for the bus destination, the message is sent to the exception destination.
You specify the transactional context of a mediation handler by setting the Global transaction property to True using the administrative console. The default is False, and a global transaction is not started. We can also configure individual messaging operations to run outside the global unit of work.
Configure mediations