Author |
Message
|
techno |
Posted: Wed Feb 02, 2005 1:59 pm Post subject: Cluster Queue |
|
|
Chevalier
Joined: 22 Jan 2003 Posts: 429
|
I have a java app putting messages to a cluster queue which is physically available in two qmgrs.
My observation is: When defbind in that queue def is open, even when the queue is removed from cluster, my app tried to put the message to the same cluster queue. Till the cluster queue was made available (readded to cluster) , all the messages were sitting in cluster txmit queue. I do not understand how is this happening. I was expecting that app would throw RC=2085 or the messages would reach other cluster queue . Application which is putting the messages is constantly running and is not made down when queue is removed from cluster.
Is above reasonable? If so, pls make me understand.
Thanks |
|
Back to top |
|
 |
EddieA |
Posted: Wed Feb 02, 2005 2:14 pm Post subject: |
|
|
 Jedi
Joined: 28 Jun 2001 Posts: 2453 Location: Los Angeles
|
Quote: |
When defbind in that queue def is open |
You are telling MQ to put every message to the same queue. It's working exactly as designed.
Quote: |
I was expecting that app would throw RC=2085 |
No, that's only applicable to an OPEN. You're queue was open.
Quote: |
the messages would reach other cluster queue |
No, you used Bind on Open. The queue was open.
Cheers, _________________ Eddie Atherton
IBM Certified Solution Developer - WebSphere Message Broker V6.1
IBM Certified Solution Developer - WebSphere Message Broker V7.0 |
|
Back to top |
|
 |
techno |
Posted: Wed Feb 02, 2005 3:19 pm Post subject: |
|
|
Chevalier
Joined: 22 Jan 2003 Posts: 429
|
|
Back to top |
|
 |
techno |
Posted: Thu Feb 03, 2005 1:38 pm Post subject: |
|
|
Chevalier
Joined: 22 Jan 2003 Posts: 429
|
Suppose, application opened a cluster queue and started putting the messages ( Does not reopen the queue for every msg). At this point, let's say the queue is made an ordinary queue. ( alter q() cluster (' '). Do I need to do put (disabled)? why? ). Where shall be the message. I have observed that the msg is stuck in cluster xmit-q. Even after bringing the queue back into the cluster, I see the messages still stuck into xmit-q. They are unusable now.
When the application is restarted (when queue is still a ordinary one), I have see the messages reaching destination-qmgr dead-letter-q.
Is above result expected? How do I make sure that the messages are not lost in cluster xmitq or dead-letter-q..
Thanks |
|
Back to top |
|
 |
EddieA |
Posted: Thu Feb 03, 2005 2:30 pm Post subject: |
|
|
 Jedi
Joined: 28 Jun 2001 Posts: 2453 Location: Los Angeles
|
Quote: |
How do I make sure that the messages are not lost in cluster xmitq or dead-letter-q |
Don't change queues that are in use by an application.
What exactly are you trying to achieve here.
Cheers, _________________ Eddie Atherton
IBM Certified Solution Developer - WebSphere Message Broker V6.1
IBM Certified Solution Developer - WebSphere Message Broker V7.0 |
|
Back to top |
|
 |
techno |
Posted: Thu Feb 03, 2005 3:01 pm Post subject: |
|
|
Chevalier
Joined: 22 Jan 2003 Posts: 429
|
This is an exteme negative case, and want to test how the app behaves when this occurs. ie, both queues were moved out of cluster when app is running. |
|
Back to top |
|
 |
techno |
Posted: Thu Feb 03, 2005 4:14 pm Post subject: |
|
|
Chevalier
Joined: 22 Jan 2003 Posts: 429
|
I also have another question: I have QMGR1, QMGR2, QMGR3 with Q1 on QMGR2, QMGR3. After sending some messages to Q1 through QMGR1, I suspended QMGR2 and QMGR3. Though QMGR2 and QMGR3 are suspended, Q1 received the messages. Is it because of the auto-defined channels to QMGR2 and QMGR3 from QMGR1? Is this the reason PUT(disabled) to be done? That means, as long as the auto-defined channels exist, clustering may not eb needed! Am I correct?
Thanks |
|
Back to top |
|
 |
PeterPotkay |
Posted: Thu Feb 03, 2005 5:10 pm Post subject: |
|
|
 Poobah
Joined: 15 May 2001 Posts: 7722
|
Carefully read about what SUSPEND means. It advises the cluster that it should not get anymore messages, unless there is no other destination, or the message is specifically addressed to that QM.
If you SUSPNEDED both QM2 and QM3, there is no other possible destination for the message, so the SUSPEND command is overrdden for that particular message.
If you want to stop messages from coming to a QM in the cluster, even if the are specifically addressed to that QM, or even if that QM is the only one that hosts that queue, then you need to stop the CLUSRCVR. This will cause the messages to stack up in the S.C.T.Q. on the sending QM.
Again study the SUSPEND command. There are times to use it, there are times to STOP a CLUSRCVR, and there are times to do both. And there are times to PUT_INHIBIT a queue instead.
Also, see this bug:
http://www.mqseries.net/phpBB2/viewtopic.php?t=13925&highlight=inhibit _________________ Peter Potkay
Keep Calm and MQ On |
|
Back to top |
|
 |
|