|
RSS Feed - WebSphere MQ Support
|
RSS Feed - Message Broker Support
|
 |
|
Overlapping Clusters and Queue manager Alias |
« View previous topic :: View next topic » |
Author |
Message
|
venkat kurra |
Posted: Tue Jul 30, 2002 8:35 am Post subject: Overlapping Clusters and Queue manager Alias |
|
|
 Master
Joined: 18 Oct 2001 Posts: 245 Location: Bloomington , IL
|
Hi,
Assume that we have 2 clusters CLUSTER1 and CLUSTER2 with full repository Queue managers QM1 and QM3 respectively. One more queue manager QM2 is partial and common to both clusters. As Mqseries standards it's not good idea to do this set up with one full repository/cluster.....just I want to test this setup for other configuration.
On QM1
ALTER QMGR REPOS(CLUSTER1)
DEFINE CHANNEL(TO.QM1) CHLTYPE(CLUSRCVR) TRPTYPE(TCP) CONNAME(XYZ..) CLUSTER(CLUSTER1)
DEFINE CHANNEL(TO.QM2) CHLTYPE(CLUSSDR) TRPTYPE(TCP) CONNAME(ABC..) CLUSTER(CLUSTER1)
On QM2
DEFINE CHANNEL(TO.QM2) CHLTYPE(CLUSRCVR) TRPTYPE(TCP) CONNAME(ABC..) CLUSTER(CLUSTER1)
DEFINE CHANNEL(TO.QM1) CHLTYPE(CLUSSDR) TRPTYPE(TCP) CONNAME(XYZ..) CLUSTER(CLUSTER1)
Then I tested cluster setup for CLUSTER1 and it worked fine.
On QM3
ALTER QMGR REPOS(CLUSTER2)
DEFINE CHANNEL(TO.QM3) CHLTYPE(CLUSRCVR) TRPTYPE(TCP) CONNAME(.......) CLUSTER(CLUSTER2)
DEFINE CHANNEL(TO.QM2) CHLTYPE(CLUSSDR) TRPTYPE(TCP) CONNAME(........) CLUSTER(CLUSTER2)
On QM2
DEFINE NAMELIST(CLUSTER12) NAMES(CLUSTER1 , CLUSTER2)
And modified all Channels to namelist by using mqseries console.
Created one sender channel to QM3(namelist only).
Now QM1 and QM2 are in CLUSTER1 and QM2 and QM3 are in CLUSTER2.(QM2 is partial repos).I want to send a message from QM1 to QM3 with out using remote definition on QM2. I tried with queue manager alias on QM2 but it is not working.
I defined remote queue on QM1
DEFINE QREMOTE(QM3.LOCAL.QUEUE) RNAME(QM3.LOCAL.QUEUE) RQMNAME(QM3) XMITQ(' ')
Queue manager alias on QM2
DEFINE QREMOTE(QM3) RNAME(' ') RQMNAME(QM3) XMITQ(' ') CLUSTER(CLUSTER1)
This is visible on QM1
Clustered Local queue on QM3
DEFINE QLOCAL(QM3.LOCAL.QUEUE) CLUSTER(CLUSTER2)
this is visible on QM2.
I didn't see the message even in dead letter queue or cluster xmitq .If you have any idea ...please let me know.Thanks for your help. _________________ Thanks,
Venkat Kurra
IBM Certified Specialist-MQSeries
IBM Websphere MQSeries Administrator
IBM WebSphere Message Broker System Admin |
|
Back to top |
|
 |
venkat kurra |
Posted: Tue Jul 30, 2002 11:44 am Post subject: |
|
|
 Master
Joined: 18 Oct 2001 Posts: 245 Location: Bloomington , IL
|
I corrected my self.......
Just i modified cluster Sender channels to assocoated qmgrs cluster and getting 2 messages correctly.After that all messages went to dead letter queue because of Initiators and listeners are stopping at the time of sending messages from one qmgr to another.all this setup on my work statiion only.
Any idea? _________________ Thanks,
Venkat Kurra
IBM Certified Specialist-MQSeries
IBM Websphere MQSeries Administrator
IBM WebSphere Message Broker System Admin |
|
Back to top |
|
 |
PeterPotkay |
Posted: Tue Jul 30, 2002 8:29 pm Post subject: |
|
|
 Poobah
Joined: 15 May 2001 Posts: 7722
|
Method#1
Delete the remote queue def for QM3.LOCAL.QUEUE on QM1; you don't need it. When the app connected to QM1 goes to do its open of QM3.LOCAL.QUEUE, it also has to specify QM3 on the open call. This will cause your QM alias on QM2 to do its thing and send the message to QM3.
If you don't want to have to specify the QM on the Open call (just connect me to the default QM,for instance, which allows you to move your code between testing levels with no changes), do the following instead:
Method#2
Delete the remote queue def for QM3.LOCAL.QUEUE on QM1; you don't need it.
Get rid of the Queue Manager Alias on QM2, and replace it with a clustered Queue Alias on QM2, like so:
DEFINE QALIAS(MYQM3.LOCAL.QUEUE) TARGQ(QM3.LOCAL.QUEUE) CLUSTER(CLUSTER1) DEFBIND(NOTFIXED)
Now any app on CLuster1 (including QM1 like your requirement) that puts a message to MYQM3.LOCAL.QUEUE will have the message automatically end up on QM3.LOCAL.QUEUE on QM3.
When you open a queue you need to set DEFBIND to either (NOTFIXED) or (QDEF) because if it is left as the default (OPEN) the queue manager will resolve the alias definition to the bridge queue manager (QM2) that hosts it, and the bridge will not forward the message on.
If you have a request reply model, you probably want to use both methods. For apps that put the request message, use method #1, so they dont have to specify the QM name. For the repliers, use method#2, since the reply2qmname will be dynamically filled in by the requestor and the replier can just honor that field (again, no code changes between testing levels). _________________ Peter Potkay
Keep Calm and MQ On |
|
Back to top |
|
 |
venkat kurra |
Posted: Wed Jul 31, 2002 5:20 am Post subject: |
|
|
 Master
Joined: 18 Oct 2001 Posts: 245 Location: Bloomington , IL
|
Thanks Peter,
I got solution in this way....
On QM2
DEFINE QREMOTE(CLUSTER2) RNAME(' ') RQMNAME('') XMITQ(' ') CLUSTER(CLUSTER1)
DEFINE QREMOTE(CLUSTER1) RNAME(' ') RQMNAME('') XMITQ(' ') CLUSTER(CLUSTER2)
ON QM1
DEFINE QREMOTE(QM3.LOCAL.QUEUE) RNAME(QM3.LOCAL.QUEUE) RQMNAME(CLUSTER2) XMITQ(' ')
DEFINE QLOCAL(QM1.LOCAL.QUEUE) CLUSTER(CLUSTER1)
ON QM3
DEFINE QLOCAL(QM3.LOCAL.QUEUE) CLUSTER(CLUSTER2)
DEFINE QREMOTE(QM1.LOCAL.QUEUE) RNAME(QM1.LOCAL.QUEUE) RQMNAME(CLUSTER1) XMITQ(' ')
Now this is working fine and need to do few more tests.
Listeners and Initiators stopped because of clusters are not set it up in proper way. _________________ Thanks,
Venkat Kurra
IBM Certified Specialist-MQSeries
IBM Websphere MQSeries Administrator
IBM WebSphere Message Broker System Admin |
|
Back to top |
|
 |
nimconsult |
Posted: Wed Jul 31, 2002 10:59 pm Post subject: |
|
|
 Master
Joined: 22 May 2002 Posts: 268 Location: NIMCONSULT - Belgium
|
I personally prefer a design where the "public" queues are exclusively advertised on the "gateway" queue manager instead of having them disseminated in the rest of the cluster.
Slight variation on your definitions:
On QM2:
DEFINE QALIAS(QM1.LOCAL.QUEUE) TARGQ(QM1.LOCAL.QUEUE) CLUSTER(CLUSTER2)
DEFINE QALIAS(QM3.LOCAL.QUEUE) TARGQ(QM3.LOCAL.QUEUE) CLUSTER(CLUSTER1)
On QM1:
DEFINE QLOCAL(QM1.LOCAL.QUEUE) CLUSTER(CLUSTER1)
On QM3:
DEFINE QLOCAL(QM3.LOCAL.QUEUE) CLUSTER(CLUSTER2)
The queue aliases on QM2 look strange but they work, I've tried it. _________________ Nicolas Maréchal
Senior Architect - Partner
NIMCONSULT Software Architecture Services (Belgium)
http://www.nimconsult.be |
|
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
|
|
|
|