Author |
Message
|
PeterPotkay |
Posted: Mon Sep 16, 2002 11:50 am Post subject: Remote Queue Def in a Cluster |
|
|
 Poobah
Joined: 15 May 2001 Posts: 7722
|
Maybe an obvious question...
QM1 and QM2 are both full repositories of ClusterA.
QM3 is not part of the cluster.
QM1 has a remote queue def to QueueC on QM3. The remote queue def is a clustered queue in ClusterA.
An app on either QM1 or QM2 can now put to QueueC.
What if QM1 goes down? Is the app on QM2 now not able to get a message to QueueC? Do I need to make the remote queue def on both QM1 and QM2? _________________ Peter Potkay
Keep Calm and MQ On |
|
Back to top |
|
 |
jc_squire |
Posted: Mon Sep 16, 2002 12:48 pm Post subject: |
|
|
 Centurion
Joined: 14 Apr 2002 Posts: 105 Location: New Zealand
|
Hi Peter,
At the moment QM1 acts as a "gateway" for QM3 to the cluster and as a "gateway" for the cluster to QM3 i.e. messages from QM2 route to QM3 via QM1.
So, yes, you would have to define a RQ, XMITQ and CHLS on both QM1 and QM2 to bypass QM1 as a single point of failure.
The other solution is to make QM3 part of cluster, however, assume in your case it is not possible because you probably would have done it already
Regards _________________ J C Squire
IBM Certified Specialist - MQSeries |
|
Back to top |
|
 |
PeterPotkay |
Posted: Mon Sep 16, 2002 1:00 pm Post subject: |
|
|
 Poobah
Joined: 15 May 2001 Posts: 7722
|
Thanks thats what I thought.
Next question.
Lets say I create a clustered local queue on QM1 called LOGQUEUE. Fr the sake of discussion, we are only concerned with putting to this queue. We want to insure that messages get there, because once a week we run a batch job to look at that queue.
When QM1 and QM2 are both up, an app on QM2 can put to LOGQUEUE and the messages will end up on the local instance of LOGQUEUE on QM1, because LOGQUEUE is advertized to the custer.
IF QM1 goes down, an app on QM2 that puts to LOGQUEUE will have what happen? I assume the put will fail, right? And if so, I really should create a LOGQUEUE on both QM1 and QM2. _________________ Peter Potkay
Keep Calm and MQ On |
|
Back to top |
|
 |
bduncan |
Posted: Mon Sep 16, 2002 1:12 pm Post subject: |
|
|
Padawan
Joined: 11 Apr 2001 Posts: 1554 Location: Silicon Valley
|
Yes, the put will fail (because there are no available instances of the clustered queue - try put disabling it and see for yourself), and yes, you should put an instance of LOGGING on each queue manager. Don't even make the LOGGING queues members of the cluster, just plain ol' local queues... That's exactly what we did for our logging system in a cluster... _________________ Brandon Duncan
IBM Certified MQSeries Specialist
MQSeries.net forum moderator |
|
Back to top |
|
 |
jc_squire |
Posted: Mon Sep 16, 2002 1:45 pm Post subject: |
|
|
 Centurion
Joined: 14 Apr 2002 Posts: 105 Location: New Zealand
|
If you realy want a single LOGGING queue you can use D/Queuing in parallel with the cluster, this way the app on QM2 will not fail if QM1 is not available and messages will just build up on the xmitq.
Regards _________________ J C Squire
IBM Certified Specialist - MQSeries |
|
Back to top |
|
 |
PeterPotkay |
Posted: Mon Sep 16, 2002 6:19 pm Post subject: |
|
|
 Poobah
Joined: 15 May 2001 Posts: 7722
|
What is "D/Queuing "? _________________ Peter Potkay
Keep Calm and MQ On |
|
Back to top |
|
 |
jc_squire |
Posted: Mon Sep 16, 2002 6:33 pm Post subject: |
|
|
 Centurion
Joined: 14 Apr 2002 Posts: 105 Location: New Zealand
|
Sorry - I should have used the correct abbreviation DQM (Distributed Queue Management) with a rq,xmitq and chl.
This is doubling up on system objects but if it makes the logging easier ..... _________________ J C Squire
IBM Certified Specialist - MQSeries |
|
Back to top |
|
 |
PeterPotkay |
Posted: Mon Sep 16, 2002 6:38 pm Post subject: |
|
|
 Poobah
Joined: 15 May 2001 Posts: 7722
|
Got it. Thanks again. _________________ Peter Potkay
Keep Calm and MQ On |
|
Back to top |
|
 |
Ratan |
Posted: Fri Sep 20, 2002 12:15 pm Post subject: |
|
|
 Grand Master
Joined: 18 Jul 2002 Posts: 1245
|
If your application at QM2 puts messages on the LOGGING queue then there is no point in defining the LOGGING queue at QM1 ( if they are clustered). Because the messages will always be put to LOGGING queue on QM2.
-Laze |
|
Back to top |
|
 |
Ratan |
Posted: Fri Sep 20, 2002 12:31 pm Post subject: |
|
|
 Grand Master
Joined: 18 Jul 2002 Posts: 1245
|
Quote: |
Yes, the put will fail (because there are no available instances of the clustered queue - try put disabling it and see for yourself), and yes, you should put an instance of LOGGING on each queue manager. Don't even make the LOGGING queues members of the cluster, just plain ol' local queues... That's exactly what we did for our logging system in a cluster... |
Sorry, But I believe this is wrong. I could be wrong though. There is a SYSTEM.CLUSTER.TRANSMIT.QUEUE which will hold your messages for the LOGGING queue untill QM1 comes up.
-Laze |
|
Back to top |
|
 |
PeterPotkay |
Posted: Tue Sep 24, 2002 8:05 am Post subject: |
|
|
 Poobah
Joined: 15 May 2001 Posts: 7722
|
QM1 and QM2 are in ClusterA.
QM3 is not in any cluster, and has a local queue called FinalQ.
QM1 is the gateway to QM3. QM1 has an XMIT queue called QM3.XMIT. It has a QM Alias called QM3, which maps to QM3.XMIT. I did the following on QM1:
DEFINE QREMOTE('QM3') RNAME(' ') RQMNAME(QM3) XMITQ(QM3.XMITQ) CLUSTER(ClusterA)
DEFINE QLOCAL(QM3.XMIT) USAGE(XMIT)
An app connected to QM2 needs to get messages to FinalQ / QM3. In its open of FinalQ, it cannot specify the QM name, so I want to create a remote queue definition on QM2 that points to FinalQ / QM3. So I did the following on QM2:
DEFINE QREMOTE(FinalQ) RNAME('FinalQ') RQMNAME(QM3) XMITQ(' ') CLUSTER(ClusterA)
But any messages I put to FinalQ on QM2 just sit in the SYSTEM.CLUSTER.TRANSMIT.QUEUE.
????? _________________ Peter Potkay
Keep Calm and MQ On |
|
Back to top |
|
 |
vennela |
Posted: Tue Sep 24, 2002 9:49 pm Post subject: |
|
|
 Jedi Knight
Joined: 11 Aug 2002 Posts: 4055 Location: Hyderabad, India
|
That's easy:
A typo: DEFINE QLOCAL(QM3.XMIT) USAGE(XMIT)
It should have been as follows:
DEFINE QLOCAL(QM3.XMIT) USAGE(XMITQ)
I tested your setup and it is working fine.
---
Venny |
|
Back to top |
|
 |
PeterPotkay |
Posted: Wed Sep 25, 2002 4:34 am Post subject: |
|
|
 Poobah
Joined: 15 May 2001 Posts: 7722
|
That was a typo in the post. The XMIT queue is defined correctly, but still my messages stack up in the cluster transmit queue.
One more clue. If I use the MQExplorer to look at the QM Alias in my original setup, click on the Cluster Tab, I see that the queue is part of my Cluster. When I click on say the general tab, as I am leaving the cluster tab, I get the following error:
Code: |
The queue manager is not member of the cluster 'Cluster1'. The object which you have shared is in the cluster will no be made available to other members of the cluster until you make this queue manager a member of the cluster (AMQ4514). |
I get this on the gateway QM. In fact I get it for any clustered queue if I do a properties check on it on QM1. But it IS part of the cluster, since messages are using ity to get into the cluster and messages that don't use remote queue defs are leaving the cluster via this single gateway. Its like QM2 doesn't know about the QM Aliases on QM1, so the messages stack up???
Also this error doesn't show up on my teammates MQExplore, which is newer than mine. Is the error even valid?
*************************
I don't understand why yours works and mine don't.
?????
I deleted the remote queue def from QM2. I then added the remote queue def
to QM1, but this time also specified the XMIT queue in the remote queue def,
and it works.
Before I saw your postl, I concluded that if you are going to create a
remote queue def in a cluster, it needs to be on the gateway queue manager, since that is where the XMIT queue lives. Since I can't cluster the XMIT queue, I can't refer to it in a remote queue def on a clustered QM that doesn't house that XMIT queue. I didn't feel to confident though, since I don't see any docs that say you can or can't define a remote queue def anywhere in a cluster.
I did find an example of exactly what I am trying to achieve in this years
Cluster Handout from the Tech Conference in Dallas. In this example, they
define the remote queue def on the gateway QM, and the putting app is
connected to another clustered QM. It doesn't say you HAVE to do it this
way, but since it was the only example I found, I assume this was the case, until you came along and debunked that theory! _________________ Peter Potkay
Keep Calm and MQ On |
|
Back to top |
|
 |
jc_squire |
Posted: Wed Sep 25, 2002 7:01 pm Post subject: |
|
|
 Centurion
Joined: 14 Apr 2002 Posts: 105 Location: New Zealand
|
can you post the header of the messages on SYSTEM.CLUSTER.TRANSMIT.QUEUE _________________ J C Squire
IBM Certified Specialist - MQSeries |
|
Back to top |
|
 |
PeterPotkay |
Posted: Thu Sep 26, 2002 4:41 am Post subject: |
|
|
 Poobah
Joined: 15 May 2001 Posts: 7722
|
They don't have an XMIT header????
I looked in the MQExplorer and thru QPASA, and the only thing in the message buffer is my data.
I did an amqsbcgc on the cluster xmit queue and piped the output to a file. Again, just the MQMD and my message data. _________________ Peter Potkay
Keep Calm and MQ On |
|
Back to top |
|
 |
|