This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
I am trying to load balance JMS messages in my application and here is what I have setup. 1. I have a admin server and two managed servers MS1 and MS2. I tied them up in a cluster. 2. I created a JMS connection factory and deployed it on the cluster 3. then I created a distributed destination queue (DQ) which is deployed on the cluster and it has members from MS1 and MS2.
Now when I run my application and post the message to the destination queue, messages are distributed correctly and are balanced between MS1 and MS2 queues.
then I created one more JMS server (with a queue destination) on admin server and added that JMS server in the Distributed destination queue (DQ). Now when my application sends message to the DQ, all the messages are going in the default server queue only. They do not go to the MS1 or MS2 queues. I also tried by un-checking server affinity option of the connection factory but it doesnt work.
What is the problem? Why messages are not load balances across multiple queues?
I suspect that the problem lies in the fact that JMS servers are not clustered. A JMS server is pinned to a single server in the cluster to preserve data consistency. It does also mean that automatic failover is not supported by WebLogic JMS, so manual recovery is needed.