Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Won't Fix
-
None
-
None
-
None
Description
When using DTC in multiple processes that access the same broker instance all but the first instance can't enlist to the transaction. All other throw an exception that there is already a resource manager with the same id. This only happens in case another resource manager like a db server is enlisted on the transaction.
This happens because they all processes connected to one broker instance use the same resource manager ID. It is a Guid generated from the broker id.
I doubt that there is any good ID that is unique to the process instance but still the same on restart (e.g. connection/client id change on reboot). Is there any other?
If not the resource manager id has be configurable somehow by the application.
An other option (the one that should be prefered) is to enlist as promotable single phase enlistment. But this would require that the ActiveMQ server is responsible for the transaction as soon as it gets promoted. This would require changes in the server itsself though but make the system much more robust.
http://msdn.microsoft.com/en-us/library/ms229980(v=vs.80).aspx