Transactions
We have been talking about how message endpoints enable communication across different subsystems. This brings up a very crucial question—what about transactions? How are they handled across the chain? What are the Spring Integration offerings on transactions?
Spring Integration, per se, does not provide additional support for transactions; rather, it builds upon the existing infrastructure of the transaction support provided by Spring. It just provides hooks that can be used to plug in the transactional behavior. Annotating a service activator or gateway with a transactional annotation will support the transaction boundaries of the message flow. Let's say a user process was initiated with the transaction that is propagatory in nature and all Spring Integration components in the chain have been annotated as transactional, then a failure at any stage in the chain will result in a roll back. However, this will happen only if transaction boundaries have not been broken—put simply...