|
RSS Feed - WebSphere MQ Support
|
RSS Feed - Message Broker Support
|
 |
|
Application message segmentation in a clustered environment |
« View previous topic :: View next topic » |
Author |
Message
|
tminifie |
Posted: Thu Oct 30, 2008 8:02 am Post subject: Application message segmentation in a clustered environment |
|
|
Apprentice
Joined: 18 Jan 2007 Posts: 26
|
Hi
I'm investigating a bug in our system that appears to be due our application incorrectly handling a segmented message in our clustered environment. We are using MQ 6.0.
Our application is setting the Target Queue Mangager name when binding on open(MQOO_BIND_ON_OPEN) to send a segmented message. The target queue in this case happens to reside on another Queue Manager in the cluster, not the Queue Manager that is being targeted. So we get an MQ 2085 error.
Most of the queues in our cluster have multiple instances meaning they exist on all Queue Mangers in the cluster so this bug is rare. However, that being said is it neccessary to specify the "Target Queue Manager"?
I'm guessing if we didn't then MQ would have found the correct Target Queue Manger in the cluster for us...I've read the following MQ Cluster documentation but am still unsure:
Quote: |
MQOPEN An option on the MQOPEN call, the MQOO_BIND_ON_OPEN option, allows you to specify that, when there are multiple instances of the same queue within a cluster, the target queue manager needs to be fixed. That is, all messages put to the queue specifying the object handle returned from the MQOPEN call must be directed to the same queue manager using the same route. |
|
|
Back to top |
|
 |
bruce2359 |
Posted: Thu Oct 30, 2008 8:28 am Post subject: |
|
|
 Poobah
Joined: 05 Jan 2008 Posts: 9469 Location: US: west coast, almost. Otherwise, enroute.
|
Quote: |
Our application is setting the Target Queue Mangager name |
How is your application doing this? By specifying the qmgr name in the MQOD? If so, don't. Specify only the queue name. Let the qmgr resolve qmname. _________________ I like deadlines. I like to wave as they pass by.
ב''ה
Lex Orandi, Lex Credendi, Lex Vivendi. As we Worship, So we Believe, So we Live. |
|
Back to top |
|
 |
Vitor |
Posted: Thu Oct 30, 2008 8:31 am Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
If there are multiple instances of a queue in a cluster, bind on open will select one of them (according to workload distribution) and send all messages to that. You wouldn't typically specify the target yourself?
Why are you specifying a target qm in a cluster? What is the design requirement here that prevents you using the cluster facilities? Or is there no requirement aside from the application developer knowing more about clustering?  _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
tminifie |
Posted: Thu Oct 30, 2008 9:12 am Post subject: |
|
|
Apprentice
Joined: 18 Jan 2007 Posts: 26
|
Yes we are specifying the Queue Manager Name in the MQOD, see below
Quote: |
MQOD od = {MQOD_DEFAULT};
memset(od.ObjectQMgrName, ' ', MQ_Q_NAME_LENGTH);
strncpy(od.ObjectQMgrName, getenv("CBQMGR"), MQ_Q_NAME_LENGTH);
|
and
I don't believe there is a requirement, as Victor stated I think it was a lack of clustering knowledge by the application developer.
I will remove the code snippet above and let MQ resolve the Queue Manger name.
Thanks very much fellows! |
|
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
|
|
|
|