A transaction is a set of operations executed as a single unit. It also can be defined as an agreement, which is carried out between separate entities or objects. A transaction can be considered as indivisible or atomic when it has the characteristic of either being completed in its entirety or not at all. During the event of a failure for a transaction update, atomic transaction type guarantees transaction integrity such that any partial updates are rolled back automatically.
Transactions have many different forms, such as financial transactions, database transactions etc.
From the ESB point of view, there are two types of transactions:
A distributed transaction is a transaction that updates data on two or more networked computer systems, such as two databases or a database and a message queue such as JMS. Implementing robust distributed applications is difficult because these applications are subject to multiple failures, including failure of the client, the server, and the network connection between the client and server. For distributed transactions, each computer has a local transaction manager. When a transaction works at multiple computers, the transaction managers interact with other transaction managers via either a superior or subordinate relationship. These relationships are relevant only for a particular transaction.
For an example that demonstrates how the transaction mediator can be used to manage distributed transactions, see Transaction Mediator Example.
Java Message Service (JMS) transactions
In addition to distributed transactions, WSO2 ESB also supports JMS transactions.
For more information on JMS transactions, see JMS Transactions.