Author |
Message
|
ramires |
Posted: Thu Jul 20, 2006 4:51 pm Post subject: CLWLUSEQ parameter |
|
|
Knight
Joined: 24 Jun 2001 Posts: 523 Location: Portugal - Lisboa
|
Hello,
I'm testing the cluster options for v6. I have a cluster with 3 qmgrs (QMAA; QMBB and QMCC). Each one has a cluster queue (CL1.CLUS) with DEFBIND(NOTFIXED) and CLWLUSEQ(ANY).
QMAA, queue manager to act as gateway, has CLWLUSEQ(ANY).
A fourth queue manager outside the cluster has a remote queue defention pointing to QL1.CLUS on QMAA, and a sender chl to QMAA
If I put disable QL1.CLUS on QMAA I was expecting the messages routed to the other 2 instances of the queue CL1.CLUS (on QMBB and QMCC) but theu go to QMAA dead queue with MQRC_PUT_INHIBITED.
Something is missing, but I'm not finding what it is.
Any suggestions?
Thanks
Joao Ramires |
|
Back to top |
|
 |
wschutz |
Posted: Thu Jul 20, 2006 5:11 pm Post subject: |
|
|
 Jedi Knight
Joined: 02 Jun 2005 Posts: 3316 Location: IBM (retired)
|
I would create a qmgr alias on QMAA:
def qr(QMAA) rname(' ') rqmname(' ')
not 100% sure it'll work, but worth a try.... _________________ -wayne |
|
Back to top |
|
 |
ramires |
Posted: Thu Jul 20, 2006 5:27 pm Post subject: |
|
|
Knight
Joined: 24 Jun 2001 Posts: 523 Location: Portugal - Lisboa
|
Thanks,
I just tried the queue manage alias om QMAA, but the result is the same. The destination is dead letter.
joao |
|
Back to top |
|
 |
wschutz |
Posted: Thu Jul 20, 2006 5:35 pm Post subject: |
|
|
 Jedi Knight
Joined: 02 Jun 2005 Posts: 3316 Location: IBM (retired)
|
Well, the doc does say:
Quote: |
Using a queue manager as a gateway into the cluster.
This enables workload balancing for messages coming from outside the cluster.
Suppose you have a queue called EDINBURGH on more than one queue manager in the cluster, and you want the clustering mechanism to balance the workload for messages coming to that queue from outside the cluster.
A queue manager from outside the cluster needs a transmit queue and sender channel to one queue manager in the cluster, which is called a gateway queue manager. To take advantage of the default workload balancing mechanism, one of the following must apply:
* The gateway queue manager must not contain an instance of the EDINBURGH queue.
* The gateway queue manager specifies CLWLUSEQ(ANY) on ALTER QMGR.
* The EDINBURGH queue on the gateway queue manager specifies CLWLUSEQ(ANY). |
http://publib.boulder.ibm.com/infocenter/wmqv6/v6r0/index.jsp?topic=/com.ibm.mq.csqzah.doc/csqzah0729.htm _________________ -wayne |
|
Back to top |
|
 |
ramires |
Posted: Thu Jul 20, 2006 5:56 pm Post subject: |
|
|
Knight
Joined: 24 Jun 2001 Posts: 523 Location: Portugal - Lisboa
|
Wayne, I saw that, and its not clear to me. The manual also says this:
Quote: |
CLWLUSEQ queue manager attribute
...
WebSphere MQ applies the following rules to restrict the number of remote hops to one: If a message arrives over a cluster channel, it must be put to a local instance of a cluster queue. If put locally or over a non-cluster channel, messages can be put to a local or remote cluster queue instance. |
If I put locally the CLWLUSEQ(ANY) is respected.
In the text you mention I understand when it says "one of the following must apply" the case I'm testing the condition that aplies is "
EDINBURG queue on the gateway queue manager specifies CLWLUSEQ(ANY)". |
|
Back to top |
|
 |
fjb_saper |
Posted: Thu Jul 20, 2006 8:19 pm Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
Your error is in specifying the qmgr on the remote queue. This locks in the qmgr. If you want to try with "any" try this: Specify the alias on the remote queue as qmgr. Set the alias as shown by wayne and use the xmit queue sending it to the clustered qmgr. On the cluster qmgr this will then resolve to the available clustered queue.
Enjoy  _________________ MQ & Broker admin |
|
Back to top |
|
 |
ramires |
Posted: Fri Jul 21, 2006 12:40 am Post subject: |
|
|
Knight
Joined: 24 Jun 2001 Posts: 523 Location: Portugal - Lisboa
|
fjb_saper, thanks.
II'll try that. With v5 a alias queue manager was in fact nedded. In v6 using CLWLUSEQ should be enough. CLWLUSEQ is respected when I locally put to the cluster queue (I'm using q.exe program) As the MCA receiver is another MQ application I dont' see reason for the msgs not reaching the other cluster queue instances when they arrive over a receiver channel.
Regards |
|
Back to top |
|
 |
ramires |
Posted: Fri Jul 21, 2006 5:29 am Post subject: |
|
|
Knight
Joined: 24 Jun 2001 Posts: 523 Location: Portugal - Lisboa
|
fjb_saper, wayne
It works ok when I define an ALIAS qmgr (like ANY.CLUSTER) in the gateway qmgr and in the remote queue definition outside the cluster change the RQMNAME to ANY.CLUSTER.
I'm trying to bypass this, because I've several qmgrs outside the cluster, and they are under other administration. I want to avoid asking them to change remote queue definitions. Maybe with a channel exit on the receiver to change qmgr name?
Regards |
|
Back to top |
|
 |
ramires |
Posted: Mon Jul 24, 2006 5:32 am Post subject: |
|
|
Knight
Joined: 24 Jun 2001 Posts: 523 Location: Portugal - Lisboa
|
One possible solution is to use de runmqdlq to forward messages from the dead letter queue on the gateway queue manager to the other queue instancies on the cluster, and it works.
My receiver channel fails to put to QL1.CLUS because it has put inibithed.
The message goes to dead letter queue, then runmqdlq forwards it to the same queue (QL1.CLUS). This QL1.CLUS has CLWLUSEQ(ANY), the messages are routed to the final destination.
Not very "clean", but it can be used. |
|
Back to top |
|
 |
jeevan |
Posted: Thu Apr 05, 2007 1:16 am Post subject: |
|
|
Grand Master
Joined: 12 Nov 2005 Posts: 1432
|
wschutz wrote: |
Well, the doc does say:
Quote: |
Using a queue manager as a gateway into the cluster.
This enables workload balancing for messages coming from outside the cluster.
Suppose you have a queue called EDINBURGH on more than one queue manager in the cluster, and you want the clustering mechanism to balance the workload for messages coming to that queue from outside the cluster.
A queue manager from outside the cluster needs a transmit queue and sender channel to one queue manager in the cluster, which is called a gateway queue manager. To take advantage of the default workload balancing mechanism, one of the following must apply:
* The gateway queue manager must not contain an instance of the EDINBURGH queue.
* The gateway queue manager specifies CLWLUSEQ(ANY) on ALTER QMGR.
* The EDINBURGH queue on the gateway queue manager specifies CLWLUSEQ(ANY). |
The document says this, have any one you tested that the non local cluster queue at gw qmgr has this attribute? I could not find CLWLUSEQ attribute in the EDINBURGH queue (symbolic ).
The cluster queue whose local instance is not on the gateway, has only the following attributes:
AMQ8409: Display Queue details.
QUEUE(CQ1) TYPE(QCLUSTER)
ALTDATE(2007-04-05) ALTTIME(04.52.20)
CLUSDATE(2007-04-05) CLUSTER(COTSPCL2)
CLUSQMGR(QM1) CLUSQT(QLOCAL)
CLUSTIME(04.52.21) CLWLPRTY(0)
CLWLRANK(0) DEFBIND(OPEN)
DEFPRTY(0) DEFPSIST(NO)
DESCR( ) PUT(ENABLED)
QMID(QM1_2007-04-05_04.51.11)
Also, I looked at a few interesting discussions about cluster, it is not clear, that whether it is better to make a FR as a gateway or not. Do we also use one of the FR in load balancing ? this is more as practical question and I am seeking your expert opinion.
Third, what is the role of defbing in attribute of the queue ? What is role of mqoo_bIND_ON_OPEN parameter in the application ? are they surve the same purpose
Also, there are CLWLPRTY and CLWLRAN attrribute on queue managers and on clusrcvr channel.
The list of setup goes on and on. I am not sure what are the necessary setup to achieve:
Load balancing
failover ( among three pr, I would like to use one of them for failover of either of the PR)
Thank you very much,
http://publib.boulder.ibm.com/infocenter/wmqv6/v6r0/index.jsp?topic=/com.ibm.mq.csqzah.doc/csqzah0729.htm |
|
|
Back to top |
|
 |
jeevan |
Posted: Thu Apr 05, 2007 1:53 am Post subject: |
|
|
Grand Master
Joined: 12 Nov 2005 Posts: 1432
|
are not the following two excerpt conflicting each other. Both are from IBM document.
1. Using a queue manager as a gateway into the cluster.
This enables workload balancing for messages coming from outside the cluster. Suppose you have a queue called EDINBURGH on more than one queue manager in the cluster, and you want the clustering mechanism to balance the workload for messages coming to that queue from outside the cluster. A queue manager from outside the cluster needs a transmit queue and sender channel to one queue manager in the cluster, which is called a gateway queue manager. To take advantage of the default workload balancing mechanism, one of the following must apply:
The gateway queue manager must not contain an instance of the EDINBURGH queue.
The gateway queue manager specifies CLWLUSEQ(ANY) on ALTER QMGR.
The EDINBURGH queue on the gateway queue manager specifies
CLWLUSEQ (any)
2. CLWLUSEQ queue attribute
This queue attribute specifies the behavior of an MQPUT operation when the target queue has a local instance and at least one remote cluster instance (except where the MQPUT originates from a cluster channel). This parameter is valid only for local queues. If you specify QMGR, the behavior is as specified by the CLWLUSEQ parameter of the queue manager definition. If you specify ANY, the queue manager treats the local queue as another instance of the cluster queue for the purposes of workload distribution. If you specify LOCAL, the local queue is the only target of the MQPUT operation.
http://publib.boulder.ibm.com/infocenter/wmqv6/v6r0/index.jsp?topic=/com.ibm.mq.csqzah.doc/q3.htm |
|
Back to top |
|
 |
|