|
RSS Feed - WebSphere MQ Support
|
RSS Feed - Message Broker Support
|
 |
|
Bind on group not working using RFHUTILC |
« View previous topic :: View next topic » |
Author |
Message
|
kevinobyrne |
Posted: Wed Feb 04, 2015 7:52 am Post subject: Bind on group not working using RFHUTILC |
|
|
 Voyager
Joined: 17 Jul 2007 Posts: 83 Location: Ireland
|
Hi,
I have been stuck on this issue for a while. I have 2 group messages which I am trying to put to a clustered queue, but they are going to separate queue managers.
e.g.
I have QM1, QM2 and QM3 in the same cluster.
QM2 and QM3 both have a clustered queue QUEUE.A, on which I have specified DEFBIND(GROUP).
When I write the group messages (using rfhutilc) to QUEUE.A on QM1, one message goes to QUEUE.A on QM2, the other goes to QUEUE.A on QM3.
The rfhutilc option for "Cluster Open" is set to "As Queue". If I set it to "Group", I get the same result. If I set it to "Bind Open", both messages go to the same queue manager (which I would expect).
The consuming application is WMB 7.0.0.6. The MQInput node consumes the 2 group messages if they arrive together, so group id, and sequence seem to be set correctly.
I am using WMQ 7.1.0.2
Have I missed anything?
Thanks
Last edited by kevinobyrne on Fri Feb 06, 2015 7:04 am; edited 1 time in total |
|
Back to top |
|
 |
mqjeff |
Posted: Wed Feb 04, 2015 7:59 am Post subject: |
|
|
Grand Master
Joined: 25 Jun 2008 Posts: 17447
|
It's worth writing the group to a qlocal and using amqsbcg to verify the headers. |
|
Back to top |
|
 |
bruce2359 |
Posted: Wed Feb 04, 2015 9:17 am Post subject: Re: Bind on group not working |
|
|
 Poobah
Joined: 05 Jan 2008 Posts: 9469 Location: US: west coast, almost. Otherwise, enroute.
|
kevinobyrne wrote: |
When I write the group messages (using rfhutilc) to QUEUE.A on QM1, one message goes to QUEUE.A on QM2, the other goes to QUEUE.A on QM3.
Have I missed anything? |
I believe your messages must have a valid GroupId value for BIND_ON_GROUP to work successfully. _________________ 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 |
|
 |
kevinobyrne |
Posted: Fri Feb 06, 2015 4:08 am Post subject: |
|
|
 Voyager
Joined: 17 Jul 2007 Posts: 83 Location: Ireland
|
There is a group ID set.
What I have found is that when the application writing to QM1 (SWIFT) puts the pair of messages, they are both routed correctly to just one queue manager.
Then I have stopped the broker flow and saved the 2 messages from QUEUE.A on QM1 or QM2 with RFHUTILC into a file.
But using RFHUTILC to write the messages in this file to the cluster queue from QM1, they are going to separate queue managers. I have tried this using "Load Q" and "Write Q". I have checked the manual, I believe I am using it correctly.
 |
|
Back to top |
|
 |
bruce2359 |
Posted: Fri Feb 06, 2015 6:05 am Post subject: |
|
|
 Poobah
Joined: 05 Jan 2008 Posts: 9469 Location: US: west coast, almost. Otherwise, enroute.
|
kevinobyrne wrote: |
There is a group ID set. |
An app needs to do a few things to create the msg group: the app specifies MQPMO_LOGICAL_ORDER, and sets MsgFlags to either MQMF_MSG_IN_GROUP or MQMF_LAST_MSG_IN_GROUP. The queue manager generates a new GroupId for the starting message of each new group. The qmgr keeps that GroupId and assigns a new MsgSeqNumber for each new logical message within the group.
I'm going to speculate that you missed something in your use rfhutilc. _________________ 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 |
|
 |
fjb_saper |
Posted: Fri Feb 06, 2015 6:12 am Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
kevinobyrne wrote: |
There is a group ID set.
What I have found is that when the application writing to QM1 (SWIFT) puts the pair of messages, they are both routed correctly to just one queue manager.
Then I have stopped the broker flow and saved the 2 messages from QUEUE.A on QM1 or QM2 with RFHUTILC into a file.
But using RFHUTILC to write the messages in this file to the cluster queue from QM1, they are going to separate queue managers. I have tried this using "Load Q" and "Write Q". I have checked the manual, I believe I am using it correctly.
 |
When using RFHUtil(c), apart from setting the group ID are you also setting
- the sequence number (starting with 1)
- the group flag (radio button)
[**]message in group
[**]last message in group
Have fun  _________________ MQ & Broker admin |
|
Back to top |
|
 |
kevinobyrne |
Posted: Fri Feb 06, 2015 6:52 am Post subject: |
|
|
 Voyager
Joined: 17 Jul 2007 Posts: 83 Location: Ireland
|
Thanks Bruce,
I looked into MQPMO_LOGICAL_ORDER
http://www-01.ibm.com/support/knowledgecenter/SSFKSJ_7.1.0/com.ibm.mq.doc/fr13170_.htm
Quote: |
If MQPMO_LOGICAL_ORDER is specified, the queue manager automatically generates a unique group identifier for the first message in the group or segment of the logical message, and uses that group identifier for the remaining messages in the group or segments of the logical message, so the application does not need to take any special action. This is the recommended procedure.
If MQPMO_LOGICAL_ORDER is not specified, the application must request the queue manager to generate the group identifier, by setting GroupId to MQGI_NONE on the first MQPUT or MQPUT1 call for a message in the group or segment of the logical message. The group identifier returned by the queue manager on output from that call must then be used for the remaining messages in the group or segments of the logical message. If a message group contains segmented messages, the same group identifier must be used for all segments and messages in the group.
When MQPMO_LOGICAL_ORDER is not specified, messages in groups and segments of logical messages can be put in any order (for example, in reverse order), but the group identifier must be allocated by the first MQPUT or MQPUT1 call that is issued for any of those messages. |
The sequence number and group/last flags were all set, since I was just resending a pair of group messages that I had pulled off the destination queue. But I assumed that the existing Group ID in the MQMD would be enough.
I found that it works if I use "Write Q" and tick the Put/Get Options: Logical Order.
Also it works if on the MQMD tab I Reset Ids for the first message, and then the group Id is populated from what is generated by the QM, and I copy the group Id to the second message.
Using "Load Q" doesn't work, the options don't take effect. |
|
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
|
|
|
|