Author |
Message
|
mq_developer |
Posted: Tue Sep 03, 2002 4:12 pm Post subject: Strange cluster queue Behaviour |
|
|
Voyager
Joined: 18 Feb 2002 Posts: 82
|
All ,
I had a situation like this , i clustered some 180 queues on the qmgr A and
application (MQSI) is connected to qmgr B (which is clustered with Qmgr A and both qmgr A & B has common repository as qmgr C) which puts messages to the clustered queues on A.
Behaviour i experienced was whenever the MQSI message flow trys to put a message (using MQOUTPUT Node) it comes out with an error code 2085 , but if i use amqsput messages are going thru. And also before amqsput ,if i issue a
dis qcluster(*) ,
it woudlnt show the clustered queues (180 of them ) on qmgr B , but atfer amqsput it shows the queue which i had put a message to and my message flow will also able to put the messages .
Is there any difference in the way MQOPEN call being issued in AMQSPUT & MQSI ?
Can this behaviour be explained ?
Also help me understand what could cause this behaviour and how to correct it in the future.
Sad part of all is, on that day, i issued 180 put calls ( Even though i used a a script to do iteratively)
-- Ram -- |
|
Back to top |
|
 |
mrlinux |
Posted: Wed Sep 04, 2002 3:50 am Post subject: |
|
|
 Grand Master
Joined: 14 Feb 2002 Posts: 1261 Location: Detroit,MI USA
|
On your MQSI node are you specifing a queue manager name ????
You should specify blanks. _________________ Jeff
IBM Certified Developer MQSeries
IBM Certified Specialist MQSeries
IBM Certified Solutions Expert MQSeries |
|
Back to top |
|
 |
mq_developer |
Posted: Wed Sep 04, 2002 6:03 am Post subject: |
|
|
Voyager
Joined: 18 Feb 2002 Posts: 82
|
Jeff,
Yes i am using a reply node to put the message back , queue name (cluster queue) and QueueManager Name are specified in the MQMD replytoq & replytoqmgr respectively.
But how does the put with qmgrname will cause this ... can you throw
some light on this ...
-- ram -- |
|
Back to top |
|
 |
mrlinux |
Posted: Wed Sep 04, 2002 7:04 am Post subject: |
|
|
 Grand Master
Joined: 14 Feb 2002 Posts: 1261 Location: Detroit,MI USA
|
I am not talking about the reply info, I mean for the MQPUT portion
where you specify queue name to do the MQPUT. _________________ Jeff
IBM Certified Developer MQSeries
IBM Certified Specialist MQSeries
IBM Certified Solutions Expert MQSeries |
|
Back to top |
|
 |
TonyD |
Posted: Wed Sep 04, 2002 2:30 pm Post subject: |
|
|
Knight
Joined: 15 May 2001 Posts: 540 Location: New Zealand
|
Quote: |
And also before amqsput ,if i issue a
dis qcluster(*) ,
it woudlnt show the clustered queues (180 of them ) on qmgr B , but atfer amqsput it shows the queue which i had put a message to and my message flow will also able to put the messages .
|
I gather from your description that QMgr B is not a repository QM, only C? In that case cluster queue information for a particular queue will only be added to QMgr B's repository information at the first time the cluster queue is accessed. Non-repository QMgrs only store info about cluster queues that they are interested in. |
|
Back to top |
|
 |
TonyD |
Posted: Wed Sep 04, 2002 3:23 pm Post subject: |
|
|
Knight
Joined: 15 May 2001 Posts: 540 Location: New Zealand
|
Further to my earlier reply, I am a bit confused...in your initial post you said you are using an MQOutput node, but in a later reply you say you are using an MQReply node. If you are using MQReply you should look at the MQMD of the incoming message to determine the Queue and QueueManager names that the node is using to write to a queue. |
|
Back to top |
|
 |
mq_developer |
Posted: Mon Sep 09, 2002 5:07 pm Post subject: |
|
|
Voyager
Joined: 18 Feb 2002 Posts: 82
|
Sorry for the late reply folks ...
I didnt put things clearly ... , here u go
C is the Repository
A is the Cluster qmgr which has 180 clustered alias queues
B is the cluster qmgr , where the broker & message flows are running.
Message flow i mentioned here is the reply message flow and now the message flow retrieves the queue name (one of the 180) and qmgrname (A) from the database and populates them to MQMD.ReplyToQ and MQMD.ReplyToQMGR and uses the MQReply Node to put the message back on to one of the 180 queues on qmgr A.
Tony ,
As you said when i issue a
DIS QCLUSTER(*) on QMGR A
i need not see the clustered queues hosted on qmgr B on qmgr A before those queues were used.
But the problem i faced is MQSI message flow when it tries to put a message for the FIRST TIME it failed (MQRC 2085) and but not the amqsput (return code zero) . Once the amqsput is issued for a queue , message flows were able to use and didnt give any nonzero return code ...
I used the samequeue & qmgr name in both MQSI message flow and amqsput ...
Did anybody have come across a similiar kinda of problem or is there an explanation for this behaviour ...
-- Ram -- |
|
Back to top |
|
 |
TonyD |
Posted: Wed Sep 11, 2002 7:41 pm Post subject: |
|
|
Knight
Joined: 15 May 2001 Posts: 540 Location: New Zealand
|
Well that does sound strange...is it repeatable? Can you create a new queue on A that is shared in your cluster, try to write to it from your flow and get a '2085'. If so I think I would set tracing on for the flow and see if any infomation turns up there. I assume you are getting the '2085' on QMgr B (where MQSI) is), not on B. I see also that you say the cluster queues are alias queues....do they resolve to non-clustered local queues on A? |
|
Back to top |
|
 |
basevij |
Posted: Wed Oct 02, 2002 5:45 am Post subject: |
|
|
Newbie
Joined: 11 Jun 2002 Posts: 5 Location: Bristol, UK
|
I have seen this behavior as well... cant explain it either.
Is it possibly due to the time taken for the Queue definitions to flow via the repositoy to Qm where they are being accessed
JB |
|
Back to top |
|
 |
leongor |
Posted: Thu Oct 03, 2002 8:20 am Post subject: |
|
|
 Master
Joined: 13 May 2002 Posts: 264 Location: Israel
|
There is a difference :
Your message flow connected to qmgr B
tries to open ReplyQ=SOMEQ ReplyQmgr=A
amqsput SOMEQ connected to qmgr B
tries to open Queue=SOMEQ Qmgr=''
In the first case MQSI looks for object A and don't find it.
You don't have any xmitQ qmgr alias for A, right ?
There is no information about A in repository either
because it's a partial repository qmgr.
In the second case amqsput doesn't limited to object A.
So it inquires the needed information from qmgr C and
put your message to qmgr A.
The found information also stored in local repository.
Now your message flow can find it also. _________________ Regards.
Leonid.
IBM Certified MQSeries Specialist. |
|
Back to top |
|
 |
|