Products | Versions |
---|---|
TIBCO ActiveMatrix BusinessWorks | - |
Not Applicable | - |
Resolution:
Description:
============
"Get JMS Queue Message" activity in a loop inside JMS transaction group times out without confirming any message when Transactional Acknowledge mode is used.
Environment:
===========
All BW Versions
All Platforms
Symptoms:
========
No messages are picked from Queue and eventually the "Get JMS Queue Message" activity times out.
Cause:
======
The queue to which BW connects to has a finite prefetch set. In such cases, BW will create one consumer for receiving the number of messages set via prefetch, i.e., if there are 20 messages in the queue, 4 consumers will be created and the EMS server will prefetch 5 messages to each consumer and those messages will be marked as "delivered" and "pending". After all messages have been received, BW will still create one more consumer and will wait for further messages to be received as the prefetch is set. As there are no further messages to be received from the queue, this consumer will time out and will eventually close the undelying session. When the session is closed, it will close all the other consumers as they are all created from the same session before they have acked the messages delivered to them. So those messages will be unmarked as "delivered" messages and will be pending in the queue.
Resolution:
==========
Change the prefetch value to "none" for the queue. You can set the prefetch value for the queue in Queue.conf under "TIBCO-HOME\ems\EMSVERSION\bin" or set it from the tibemsadmin tool.