I am not sure whether this is the right place to put this query or not. If not please push this to whichever forum you want. But i feel this is a pattern/architecture level question so can be put here and there are more architects visiting this place than anywhere else.
I have a webshpere server cluster of 3 nodes and a websphere MQ cluster. They have 1 reply queue per service. So these reply queues are shared in MQ cluster. Now the problem is most of the time if a message is put on reply queue and is intended for node 1 of Websphere server cluster but the listener running on node 2 consumes this message and node 1 gets nothing.
I have one solution for this like I can have one reply queue per node in websphere server cluster but i am looking for better suggestions by my favorite forum.
Thanks and Regards, Kundan
Failures are practice shoots for success.
Maybe I'm missing the point, but it seems relatively simple. If you want the same message to go to all consumers, you should probably use a topic rather than a queue - that's exactly what they are for.
If you don't want the same message to go to all consumers, then you'll need to explain a bit more about the rules you wish to apply.
This sounds like synchronous request-response calls with the GetAndWait API? I think multiple machines listening to the same queue will have exactly the problem you describe. Can you do a Get with the correlation id? I seem to recall something like that, but it involves scanning messages in queue and might be slow.
We use dynamic reply-to queues. MQ creates a temporary queue (from a template - low overhead) for every request. The response gets back to that queue and precisely the correct waiting thread with no ambiguity. Can you try that configuration?
A good question is never answered. It is not a bolt to be tightened into place but a seed to be planted and to bear more seed toward the hope of greening the landscape of the idea. John Ciardi