We have been struggling with this for some time and I am hoping that someone can help shed some light.
Are current architecture is as follows:
A clustered pair of JBA 4.2 servers serving up UI code
* Publishers on the UI nodes post messages to be picked up by batch nodes
A clustered pair of JBM 1.4 servers
* hosting 1 clustered queue
A clustered pair of JBA 4.2 servers serving as backend processing servers (batch nodes).
* Consumers (MDB'S) listen on remote queue to receive messages from the UI nodes.
Currently using the clustered connection factory (load balancing set true) to get a connection and post messages to the messaging nodes, we were expecting to see the messages sent to the queue from the UI nodes to be evenly distributed across both JBM nodes in a round robin fashion.
What we have observed
1. Messages appear to be round robin when both messaging nodes have an equal amount of Consumers.
2. If one node has no Consumers it appears messages are not sent to that node.
(No problems here assuming consumers get balanced)
When subscribing we use MDB's that also use the clustered connection factory, and expect that consumers will balanced across the
Cluster in a round robin-fashion.
1. The behavior here appears completely inconsistent. We have run many test cases and have not seen this round-robin.
Most of the time we will have two consumers land on the same node, and no consumers on the other.
2. With consumers not evenly distributed it appears the messages all get sent to the one node with consumers attached
and thus load is not evenly distributed (1 messaging server doing all the work).
3. It is also observed that not both consumers process incoming messages. Once we bring down consumers which was currently active, Inactive consumer will start picking up message after certain time delay.
Note that we use clustered Connection Factory and lookup using JNDI lookup specifying java.naming.provider.url as jnp://msgNode1:1100, jnp://msgNode2:1100 where msgNode1 and msgNode2 are IPs of two messaging nodes part of same message cluster
Is this expected behavior? Are others running this type of configuration successfully?
Per the comments in the previous post it appears most run there MDB's in the same JVM as the JMS provider.
This is not the case in our implementation, and I have struggled trying to find a working example of this.