|
RSS Feed - WebSphere MQ Support
|
RSS Feed - Message Broker Support
|
 |
|
ChannelExitProg(MC-76) for Cluster with prority |
« View previous topic :: View next topic » |
Author |
Message
|
abiram8 |
Posted: Tue Jan 13, 2004 1:42 am Post subject: ChannelExitProg(MC-76) for Cluster with prority |
|
|
 Master
Joined: 27 Mar 2002 Posts: 207 Location: India
|
Hi,
The priority programme given by IBM checks for sender channel in destination QM and then tries to puts messages to the QueueManager.
But there may be issues where my Channel may be stopped or it may not be active.But my QM is up and running then exit will try to connect to lower priority QM whose Channel is up.
But the issue here is the Channel only in inactive state not QM. but Exit connects to another QM.
How to make Channel Active for ever till the system/QueueManager is alive.Is there any value to be secified for any of channel parameter.
Looking for your inputs
Abiram |
|
Back to top |
|
 |
JasonE |
Posted: Tue Jan 13, 2004 2:15 am Post subject: |
|
|
Grand Master
Joined: 03 Nov 2003 Posts: 1220 Location: Hursley
|
If you really are 'stopped' then its either a manual stop or retry count expired, and theres nothing the qmgr can do to restart it.
To stop running->inactive, change the discint parameter of the cluster receiver on the destination QM
However, you should ask why first. The default wlm algorithm treats running and inactive as the same importance when calculating possible destinations, as far as I remember. Perhaps the support pack overrides that, but since you have the source it should be possible to change it. |
|
Back to top |
|
 |
oz1ccg |
Posted: Tue Jan 13, 2004 3:02 am Post subject: |
|
|
 Yatiri
Joined: 10 Feb 2002 Posts: 628 Location: Denmark
|
If you're using MQ5.3 it have to channel priority implemented as default, so MC76 should be obsolte .... But only on 5.3.
One of the challanges is to dertermine the state of the "remote" queuemanager before the exit is routing the message.
To beshure that nothing is send to a particular QMGR in a cluster the really only way to control it is shut down chin/listener.
Just my $0.02  _________________ Regards, Jørgen
Home of BlockIP2, the last free MQ Security exit ver. 3.00
Cert. on WMQ, WBIMB, SWIFT. |
|
Back to top |
|
 |
offshore |
Posted: Tue Jan 13, 2004 9:42 am Post subject: |
|
|
 Master
Joined: 20 Jun 2002 Posts: 222
|
Ozz1cg,
I had to use the MC76 support pac to obtain "message priority" with MQ 5.3.
Is this by default only valid on Windows to Windows communication. I am using it to connect Windows MQ to z/OS MQ. |
|
Back to top |
|
 |
oz1ccg |
Posted: Wed Jan 14, 2004 2:02 pm Post subject: |
|
|
 Yatiri
Joined: 10 Feb 2002 Posts: 628 Location: Denmark
|
Acording to WebSphere MQ Queue Managers Clusters manual which state:
Quote: |
Suitability is based on the state of the channel (including
any priority you might have assigned to the channel), and also the availability of
the queue manager and queue. The algorithm uses a round-robin approach to
finalize its choice between the suitable queue managers. |
This was introduced on version 5.3. Should also work on Z/OS.
So the offered workload balancing schema by MC76 should be included in MQ 5.3. This was in the annoncement letter some time ago... So I'll have to do some testing on my platforms. I did write a similar exit way back for Z/OS, with more complex balancing algorithms.
I'll be back, with a comment on the topic.
Just my $0.02  _________________ Regards, Jørgen
Home of BlockIP2, the last free MQ Security exit ver. 3.00
Cert. on WMQ, WBIMB, SWIFT. |
|
Back to top |
|
 |
PeterPotkay |
Posted: Wed Jan 14, 2004 7:45 pm Post subject: |
|
|
 Poobah
Joined: 15 May 2001 Posts: 7722
|
Below is the round robin algorithm which WebSphere MQ uses by default.
Code: |
Algorithm: The steps in choosing a destination for a message:
1.If a queue name is specified, eliminate queues that are not PUT enabled.
Eliminate remote instances of queues that do not share a cluster with the local queue manager.
Eliminate remote CLUSRCVR channels that are not in the same cluster as the queue.
2.If a queue manager name is specified, eliminate queue manager alias' that are not PUT enabled.
Eliminate remote CLUSRCVR channels that are not in the same cluster as the local queue manager.
3.If the result above contains the local instance of the queue, choose it.
4.If the message is a cluster PCF message, eliminate any queue manager you have already sent a publication or subscription to.
5.If only remote instances of a queue remains, choose Resumed queue managers over Suspended ones.
6.If more than one remote instance of a queue remains, include all MQCHS_INACTIVE and MQCHS_RUNNING channels.
7.If less than one remote instance of a queue remains, include all MQCHS_BINDING, MQCHS_INITIALIZING, MQCHS_STARTING, and MQCHS_STOPPING channels.
8.If less than one remote instance of a queue remains, include all MQCHS_RETRYING channels.
9.If less than one remote instance of a queue remains, include all MQCHS_REQUESTING, MQCHS_PAUSED and MQCHS_STOPPED channels.
10.If more than one remote instance of a queue remains and the message is a cluster PCF message, choose locally defined CLUSSDR channels.
11.If more than one remote instance of a queue remains to any queue manager, choose channels with the highest NETPRTY to each queue manager.
12.If more than one remote instance of a queue remains, choose the least recently used channel.
|
Note that if you have a cluster where all the channels are INACTIVE, and you put 1000 messages into the cluster and there are 2 queues for it, odds are you will not get a 500/500 split. One of the channels will start first, and until the second channel starts (don't worry it will), the algorithim will put all the messages to the first channel. As soon as the second channel is up, from that point forward, the algorithem will round robon the remainder of the 1000 messages.
If you put another 1000 message batch, and the channels are still running, then you will see exactly 500 go to 1 and 500 go to the other. _________________ Peter Potkay
Keep Calm and MQ On |
|
Back to top |
|
 |
abiram8 |
Posted: Tue Jan 20, 2004 3:14 am Post subject: |
|
|
 Master
Joined: 27 Mar 2002 Posts: 207 Location: India
|
Hi,
Thanks for the inputs
We are redesigning the Priority exit programme based on Queue (not to channel level).
To give light on pririty prog "It basically passes the message to the QM whose receiver channel has higher Priority"
Here I would like to implement priority to the queue level not to the Channel level.
Iam new to c/c++
1)Do I need to connect to the QM1 to know the prority of the queue.
2) Is there any other way to retrive the priority of queue without using connection (MQINI call needs to open the Queue to retrive the priority).
3) Is there any other way to select a particular queue in the cluster from a remote machine based on any other properties
Abiram |
|
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
|
|
|
|