MSMQ Adapter 6.0 | webMethods MSMQ Adapter Documentation | webMethods MSMQ Adapter Installation and User’s Guide Documentation | Overview of MSMQ Adapter | Adapter Connections | Transaction Management of MSMQ Adapter Connections
 
Transaction Management of MSMQ Adapter Connections
When you define a connection, the transaction type you choose determines the type of transaction management that the connection's operations will use. MSMQ Adapter connections support the transaction types listed in the following table. For a detailed discussion of transaction management and the MSMQ Adapter, see Transaction Management Overview.
Transaction Type
Description
Transactional
Transactional connections can be applied only to transactional queues. A transactional connection allows you to group one or more requests into a single Logical Unit of Work (LUW). You can control these requests manually (explicit transactions), or you can allow the Integration Server transaction manager to control them for you (implicit transactions).
To control these requests explicitly within a given LUW, you use the built-in services described in Built-In Transaction Management Services. If you do not use these built-in services, Integration Server will manage the requests automatically (implicitly).
If a transaction uses only a single connection, or multiple connections that are all from the same connection pool, you do not need to manage the transaction explicitly. However, if a transaction uses multiple LOCAL_TRANSACTION transaction connections from different connection pools, you must manage the transaction explicitly.
Note:
Implicit transactions complete when the flow service that contains the LUW finishes executing. If you create a looping operation within your LUW that could potentially involve a large number of requests, you might want to manage the transactions explicitly to reduce the possibility that you will need to roll back a large number of requests in the event a single request fails.
Non-Transactional
A non-transactional connection is stateless and can be applied only to non-transactional queues. All services associated with a non-transactional connection perform a single request as an autonomous unit of work.
For example, when a flow invokes a Get service associated with a non-transactional connection, these services remove each message from the MSMQ queue immediately after they process the message.