Hi all,
I have a cluster(2.2.5) Env with 2 nodes: node1 and node2. In my case i have to use the request-response mode. Previously i tried to use Queue, but we were facing the "Can't redistribute message with selector"
problem. So we moved to use Topic to get the response message in the Clustered environment.
We have a clustered topic name "responseTopic" on each node. And we are following below steps to send and get messages:
1. Create a subscriber and subscribe to "responseTopic" with "Selector"(tried both durablke and nondurable);
2.Create a producer and send messages to "requestQueue";
3.My backend listener will process the request message and send the response message to "responseTopic";
4.Use the subscriber created in step1 to consume the message from ""responseTopic;
If the backend listener and subcriber are pointing to same node, everyhing is working fine. But if they are pointing to different nodes like listener pointing to the node1 and subscriber pointing to
node2, there always a few messages getting dropped. One of my test result is like this i sent 1000 messages to the Node2 and listener is on the Node1, 31 messages can't get response back .
And i found a interesting thing on Bridge destinations from Jconsole:
Attribute Name
| Node1
| Node2
|
---|
Bridge Address | sf.mq-cluster1.0e37b331-c498-11e1-beb3-f04da2f5d266 | sf.mq-cluster1.0e36a228-c498-11e1-8d6b-f04da2f5d266 |
MessageCount | 0 | 0 |
MessageAdded | 969 | 1000 |
The MessageAdded difference is exact lost message number. Seems like something wrong during the message forwarding between different Nodes. I can't explain what is happening inside.
Any sugguestion?
Thanks!