Message selector induced single-threaded behavior
Hi,
We are using Sun MQ 3.6 enterprise edition on Linux x-86. We have the following set up:
1. A stand-alone JMS server, with queues and topics where one of the queue is, say, TaskQueue
2. A stand-alone Java application as producer that pumps task messages onto TaskQueue
3. The messages on TaskQueue have simple properties set on them, like type=10, type=20, etc
4. Multiple stand-alone Java application task runners, each configured with 5 threads. Each thread has one consumer that has its own session, but shares one public connection in the JVM. Each consumers take messages off of TaskQueue to execute some business logic. The business logic takes anywhere from 30 seconds to a few minutes to run thru.
All is fine if the consumers (may be as much as 50 when we have 10 runners with 5 threads each) do not use message selectors. By "fine" I mean we see each thread in each runner actively consuming messages from TaskQueue. However, if we just turn on a simple message selection, like type=10 on some runners and type=20 on others, we would see single-threaded behavior. That is, each runner will now only have one thread actively consuming messages with all other threads alive but sitting idle as we are using blocking receive() API. Turning on message selection is based on setting a flag in a property file.
Can anyone suggest what we should be looking to resolve this behavior?
Thanks.
--albert

