We've noticed a problem in our production ActiveMQ 5.8 instances where messages remain in a queue even when there are active consumers on that queue. Most messages are consumed by the consumers, but a few do not and remain in the queue. They just seem to be stuck there. Here's our setup:
- 2 instances of ActiveMQ 5.8 in a failover (master/slave) setup on linux - JDBC (MSSQL) for the message store I've been able to reproduce this situation manually by doing the following: 1. Create 2 consumers on a queue. 2. Run 2 Producers (from 2 separate processes) simultaneously to send 1000 messages each to the queue. 3. Use JMX to check the QueueSize of the queue. Not everytime, but every second or third run of the 2 simultaneous producers, not all of the 2000 messages will be consumed. When this happens, the consumers are still running and idle, but the QueueSize is non-zero (can be anything from 1 - 5, usually) and I can see the messages in the database. The unconsumed messages do not stop later messages from being consumed, however. A broker restart causes the 'stuck' messages to be immediately sent to the consumers. It seems to have something to do with the multiple simultaneous producers as running just 1 producer at a time works as normal with all messages consumed. I have tried to create a self-contained unit test (i.e. vm broker) for this, but was not able to reproduce the situation. However, a unit test connecting to a remote broker did show the same situation (with many more stuck messages). That would lead me to guess that the issue is perhaps in the JDBC store code, but that's just a guess. Is this a known issue? Is there any workaround for it? Is it corrected in a version later than 5.8? Thanks for the help. Nick