|
RSS Feed - WebSphere MQ Support
|
RSS Feed - Message Broker Support
|
 |
|
MQ Clustering question |
« View previous topic :: View next topic » |
Author |
Message
|
bduncan |
Posted: Mon Jun 25, 2001 11:21 am Post subject: |
|
|
Padawan
Joined: 11 Apr 2001 Posts: 1554 Location: Silicon Valley
|
POSTED with permission from the original author:
If a clustered queue manager is unreachable or unavailable due to a network error or a QMGR going down or a server crashing... whatever scenario you can think of that would
make a QMGR 'unavailable', the cluster channels to the unavailable QMGR go into a
retrying state. Workload continues to be 'destined' to this unavailable
QMGR. The channels being in a retrying state is not treated as an 'error' condition
and therefore the cluster workload balancing (round-robin) contines to consider this QMGR
as available.
|
|
Back to top |
|
 |
bduncan |
Posted: Mon Jun 25, 2001 11:31 am Post subject: |
|
|
Padawan
Joined: 11 Apr 2001 Posts: 1554 Location: Silicon Valley
|
Most likely the problem you have encountered is that you opened the clustered queue that is no longer available incorrectly. The MQOPEN command has two parameters: MQOO_BIND_ON_OPEN, and MQOO_BIND_NOT_FIXED that are important to understand when dealing with clustered queues. I believe the default (if you don't specify either) is MQOO_BIND_ON_OPEN which means that the queue manager will resolve the clustered queue (pick a certain instance of it) once on the OPEN, and then for every subsequent MQPUT you issue will go to that instance of the clustered queue - it won't workload balance. In fact, your application will continue to use this specific instance of the clustered queue even if it becomes unavailable (channel in retry mode for instance). The solution is to use the MQOO_BIND_NOT_FIXED parameter on the MQOPEN. This way, every time you do an MQPUT it will re-resolve an instance of the clustered queue, so if a specific instance becomes unavailable the workload balancing algorithm will skip it. You might be wondering why it doesn't default to MQOO_BIND_NOT_FIXED since MQOO_BIND_ON_OPEN seems useless. Well, sometimes you send multiple messages that you would like going to the same machine, so you want to force it to go to a single instance of the clustered queue. And while it appears that MQOO_BIND_ON_OPEN turns off workload balancing, this is not the case. While using this parameter causes every MQPUT to use the same instance of the queue, everytime you issue a new MQOPEN on that queue it WILL workload balance across instances... Hope this helps...
_________________ Brandon Duncan
IBM Certified MQSeries Specialist
MQSeries.net forum moderator |
|
Back to top |
|
 |
|
|
 |
|
Page 1 of 1 |
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|
|
|