Dedicated queues
It is strongly recommended that you define a dedicated queue for each agent and service that uses JMS for work for performance and monitoring purposes.
For both the WebLogic JMS and IBM® MQ, the cost of pulling up a message is proportional to the number of messages the JMS server or queue managers have to interrogate.
In the current WebLogic JMS implementation, a request for a message with a certain selector results in a sequential search through the JMS queue until a message with the specified selector is found. The JMS manager could use a lot of CPU searching for messages if there are lots of messages in the queue. Putting high volume messages into a separate JMS destination eliminates the search - the JMS manager either finds that there are no messages in that destination or it finds the message immediately.
Similarly, in the current IBM MQSeries® JMS implementation, the consumer (client) uses the supplied mq.jar to connect to the MQSeries queue manager. When the client asks for a message, the client code in com.ibm.mq.jar retrieves messages from the queue and checks whether the message has the specific selector. The mq.jar continues to do this until it has found the appropriate message or there are no more messages in the queue. When there are no more messages, the mq.jar sleeps for 5 seconds and repeats the polling cycle. Putting messages into its own JMS destination means that the mq.jar either finds the message immediately or sleep for 5 seconds.
In some extreme cases, the performance and cost is very noticeable. Take the case of a queue with messages for multiple agents and 100,000 integration messages. When a message for the Schedule transaction is created, that message is added after the existing 100,000 messages. When the Schedule transaction getter runs, the getter needs to walk through the entire queue looking for Schedule messages.
An exception to the above is development and possibly test environments. In those cases, to ease configuration and management overhead, it may be acceptable to put all the JMS destinations into a single JMS queue.