Author |
Message
|
sockynow |
Posted: Mon Jan 07, 2008 11:27 pm Post subject: Message grouping in Cluster |
|
|
Novice
Joined: 02 Apr 2006 Posts: 13
|
Hi, I have a problem with cluster. The message has been segmented before I send it to cluster. I don't know how to group messages when the cluster receives the group message. |
|
Back to top |
|
 |
sockynow |
Posted: Mon Jan 07, 2008 11:49 pm Post subject: |
|
|
Novice
Joined: 02 Apr 2006 Posts: 13
|
|
Back to top |
|
 |
fjb_saper |
Posted: Tue Jan 08, 2008 3:22 am Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
You need to open the queue with bindonopen option for the duration of putting the group.
Enjoy  _________________ MQ & Broker admin |
|
Back to top |
|
 |
sockynow |
Posted: Tue Jan 08, 2008 11:30 pm Post subject: |
|
|
Novice
Joined: 02 Apr 2006 Posts: 13
|
No one has a solution, no one can help me???
I have 2 machine, one has installed cluster which has 4 queue manager, the other has installed MQ Server 6. These two machines created a local network area (LAN). I have created sender and receiver channel. On the machine installed MQ Server 6, I set the maximum size of message on queue to 100KB. When I put the message which size is lager than 100KB, the queue automatic segments it and send to the cluster. But on the machine installed cluster, the cluster can not group messages, each queue manager has some segments of message. Here I want to group these segments into the original message and send to one queue manager in the cluster. I do not want to change the maximum size of message on queue on the machine installed MQ Server 6. Some one can help me??? |
|
Back to top |
|
 |
Vitor |
Posted: Wed Jan 09, 2008 1:22 am Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
sockynow wrote: |
No one has a solution, no one can help me???
|
Did you think fjb_saper was talking to himself???  _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
Nigelg |
Posted: Wed Jan 09, 2008 2:05 am Post subject: |
|
|
Grand Master
Joined: 02 Aug 2004 Posts: 1046
|
I think you must be mistaken. When a msg is automatically segmented by the qmgr, all the individual msg segments are put to the same qmgr in the cluster. There is no need to set BIND_ON_OPEN, since only a single msg is put by the app. _________________ MQSeries.net helps those who help themselves.. |
|
Back to top |
|
 |
Vitor |
Posted: Wed Jan 09, 2008 2:26 am Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
I think the original poster is confusing the terminology, as he talks about segments, then group messages. My reading of this is that the message is segmented manually pre-put, then transmitted as a group, then manually reassembled. Otherwise (as you correctly point out) he wouldn't be seeing the effect that he is. _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
sockynow |
Posted: Wed Jan 09, 2008 2:30 am Post subject: |
|
|
Novice
Joined: 02 Apr 2006 Posts: 13
|
I tried fjb_saper's solution but it couldn't solve my problem. The msg segments are known the last segment by the cluster so that the cluster put these other segments to another queue manager. |
|
Back to top |
|
 |
Vitor |
Posted: Wed Jan 09, 2008 2:43 am Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
sockynow wrote: |
I tried fjb_saper's solution but it couldn't solve my problem. |
Then I think you need to expand your problem description a bit to provide more information. How are you segmenting the message? What do you mean by "known the last segment by the cluster"? The cluster isn't putting anything & doesn't know anything about the message contents; that's down to your application. So following the segmentation how are you putting the resulting message(s)?
Help us to help you. _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
sockynow |
Posted: Wed Jan 09, 2008 3:26 am Post subject: |
|
|
Novice
Joined: 02 Apr 2006 Posts: 13
|
Vitor wrote: |
sockynow wrote: |
I tried fjb_saper's solution but it couldn't solve my problem. |
Then I think you need to expand your problem description a bit to provide more information. How are you segmenting the message? What do you mean by "known the last segment by the cluster"? The cluster isn't putting anything & doesn't know anything about the message contents; that's down to your application. So following the segmentation how are you putting the resulting message(s)?
Help us to help you. |
Thanks!
- My Cluster has 4 Queue Manager: QM1, QM2, QM3 and QM_GATEWAY (load balancing)
- QM1, QM2, QM3 defines local queue named INBOX and shared in Cluster
- QM_GATEWAY defines queue alias (queue remote)
My problems:
I set the maximum size of message on queue to 100KB in one Queue Manager outside Cluster (QMA. When send one message which which size is lager than 100KB from QMA, the queue automatic segments it and send to the cluster to Cluster passthrough QM_GATEWAY. The cluster can not group messages, each queue manager has some segments of message. Here I want to group these segments into the original message and send to one queue manager in the cluster. |
|
Back to top |
|
 |
Vitor |
Posted: Wed Jan 09, 2008 3:30 am Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
How is the alias on the gateway machine defined? _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
sockynow |
Posted: Wed Jan 09, 2008 3:46 am Post subject: |
|
|
Novice
Joined: 02 Apr 2006 Posts: 13
|
Vitor wrote: |
How is the alias on the gateway machine defined? |
In Gateway:
define QR(GATEWAY) RNAME('') RQMNAME('')
In QMA (Outside Cluster):
define QR(OUTBOX) RNAME('INBOX') RQMNAME('GATEWAY') |
|
Back to top |
|
 |
Vitor |
Posted: Wed Jan 09, 2008 3:58 am Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
sockynow wrote: |
Vitor wrote: |
How is the alias on the gateway machine defined? |
In Gateway:
define QR(GATEWAY) RNAME('') RQMNAME('')
In QMA (Outside Cluster):
define QR(OUTBOX) RNAME('INBOX') RQMNAME('GATEWAY') |
Sorry, I specifically meant how is the binding set? You say it's configured for workload balancing so how are the group messages directed to bypass this? _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
fjb_saper |
Posted: Wed Jan 09, 2008 4:17 am Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
OK so you are sending the messages from OUTSIDE of the cluster...
You will need an alias on the gateway qmgr to open the queue with bindonopen option. Be aware however that the bindings will be for the duration of the channel (i.e. until it goes inactive).
If you truly want to do load distribution with the grouped messages (don't know if this applies as well to segmented ones coming from outside the cluster) I would suggest following setup:
Create a local queue on the gateway qmgr with a different name. Send the messages to this local queue. Create an application that runs on the GW QM and reads the messages and does the put of the group with the bind on open option. This way each group can go to a different qmgr.
Alternative: Define a list of cluster qmgrs to your sending application and assign one of the cluster qmgrs for each put. While this allows for load distribution it does not take into consideration that one of the target qmgrs could be down. A dummy request reply service could do (an imperfect) check for this... (limiting the stuck msgs to 1 per sender?)
Enjoy  _________________ MQ & Broker admin |
|
Back to top |
|
 |
PeterPotkay |
Posted: Wed Jan 09, 2008 9:15 am Post subject: |
|
|
 Poobah
Joined: 15 May 2001 Posts: 7722
|
sockynow,
Check out "Reviewing Message Affinities" in Chapter 5 of the Cluster Manual. Segmented messages are a problem. You've designed a problem situation.
This is the easiest way to fix this:
fjb_saper wrote: |
Alternative: Define a list of cluster qmgrs to your sending application and assign one of the cluster qmgrs for each put. While this allows for load distribution it does not take into consideration that one of the target qmgrs could be down. A dummy request reply service could do (an imperfect) check for this... (limiting the stuck msgs to 1 per sender?)
|
but not perfect as fjb_saper mentioned. Avoid segmenting messages with MQ clusters. Or implement a cluster workload exit on the gateway QM that will be smart enough to handle this (not the easiest solution). _________________ Peter Potkay
Keep Calm and MQ On |
|
Back to top |
|
 |
|