ASG
IBM
Zystems
Cressida
Icon
Netflexity
 
  MQSeries.net
Search  Search       Tech Exchange      Education      Certifications      Library      Info Center      SupportPacs      LinkedIn  Search  Search                                                                   FAQ  FAQ   Usergroups  Usergroups
 
Register  ::  Log in Log in to check your private messages
 
RSS Feed - WebSphere MQ Support RSS Feed - Message Broker Support

MQSeries.net Forum Index » Clustering » Bind on group not working using RFHUTILC

Post new topic  Reply to topic
 Bind on group not working using RFHUTILC « View previous topic :: View next topic » 
Author Message
kevinobyrne
PostPosted: Wed Feb 04, 2015 7:52 am    Post subject: Bind on group not working using RFHUTILC Reply with quote

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
View user's profile Send private message
mqjeff
PostPosted: Wed Feb 04, 2015 7:59 am    Post subject: Reply with quote

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
View user's profile Send private message
bruce2359
PostPosted: Wed Feb 04, 2015 9:17 am    Post subject: Re: Bind on group not working Reply with quote

Poobah

Joined: 05 Jan 2008
Posts: 9396
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
View user's profile Send private message
kevinobyrne
PostPosted: Fri Feb 06, 2015 4:08 am    Post subject: Reply with quote

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
View user's profile Send private message
bruce2359
PostPosted: Fri Feb 06, 2015 6:05 am    Post subject: Reply with quote

Poobah

Joined: 05 Jan 2008
Posts: 9396
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
View user's profile Send private message
fjb_saper
PostPosted: Fri Feb 06, 2015 6:12 am    Post subject: Reply with quote

Grand High Poobah

Joined: 18 Nov 2003
Posts: 20696
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
View user's profile Send private message Send e-mail
kevinobyrne
PostPosted: Fri Feb 06, 2015 6:52 am    Post subject: Reply with quote

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
View user's profile Send private message
Display posts from previous:   
Post new topic  Reply to topic Page 1 of 1

MQSeries.net Forum Index » Clustering » Bind on group not working using RFHUTILC
Jump to:  



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
Protected by Anti-Spam ACP
 
 


Theme by Dustin Baccetti
Powered by phpBB © 2001, 2002 phpBB Group

Copyright © MQSeries.net. All rights reserved.