Products | Versions |
---|---|
TIBCO Enterprise Message Service | - |
Not Applicable | - |
Resolution:
A simple test with XA/transacted session and routed queue may work. However such a configuration
has problem(s) in some situations. EMS cannot guarantee to behave correctly in all situations with
XA/transacted session and routed queue, so we officially documented against using XA sessions and
transacted sessions (local and XA transactions) for routed queues.
One such known condition is that when a queue receiver at routed queue leaves a XA
prepared txn and restarted and prepared txn of queue receiver is recovered and committed,
committed msg is not removed from the queue.
To explain the above further, assume
- JMSD1 and JMSD2 are routed daemon
- JMSD1 has queue queue.sample global
- JMSD2 has queue queue.sample global@JMSD1
Now:
- send 1 msg on queue.sample
- Start a queue receiver at JMSD2 to consume that msg in a XA txn and leave a prepare txn and exit.
- Start queue receiver on JMSD2 again and recover its XA txn and commit it.
Now you will see:
Commited msg still stays in the queue queue.sample