Description
Currently the NMS API doesn't define any way for the client to participate in distributed transactions. The JMS model allows a for this using the Java XA transactions. The JMS API defines an XAConnectionFactory, XAConnection, and XASession that provide the needed bits to interact with a Transaction Manager.
We should provide something similar in NMS that allows for a provider library like NMS.ActiveMQ to be used in distributed transactions in .NET most likely using the MSDTC. The API could expose an IEnlistmentNotification implementation that allows the client to enlist the Transaction in a DTC controlled transaction as a Resource Manager.