Author |
Message
|
MarkB |
Posted: Mon Feb 06, 2012 9:12 am Post subject: Clustered MQ with Clustered WAS MDB - Configuration Question |
|
|
Newbie
Joined: 06 Feb 2012 Posts: 3
|
I was hoping someone could point me in the right direction concerning the configuration of WMQ and WAS when MDB's are used.
More specifically, what is the predominant approach to solving the problem of a clustered queue being routed messages when a consumer of those messages on a specific local queue has been disabled?
We have a clustered MQ v6 environment. All messages are put to a clustered queue name that is hosted on 2 queue managers. Each queue manager has a queue that has a WAS MDB listening or getting on it.
In the case where one MDB goes down (because of an unhandled poison message lets say), messages continue to be directed to both queue managers in the cluster, but are not being consumed off of one of the queues on one of the queue managers.
What is the recommended approach to solving this situation?
a) Reaching a reduced maximum queue depth on the local queue will result in messages being directed to the DLQ - not a great solution.
b) CCDT's only take effect at connect time, so it seems that this won't work with the MDB's that are always connected.
c) Using a cluster exit to monitor queue depth and "put disable" the local queue when a specific message depth threshold is reached sounds like a possibility, but the chances of shutting down a queue in the cluster when higher than expected volumes are encountered could be counter productive.
d) modifying the cluster message routing algorithm seems like a possibility, but is sort of heavy handed.
So, my question is, what have others done to manage this situation - what am i missing?
Thanks for reading this guys. Any info would be appreciated. If this is a silly question, please don't flame me. I've looked through the forum and could not locate a suitable solution.
 |
|
Back to top |
|
 |
PeterPotkay |
Posted: Mon Feb 06, 2012 9:41 am Post subject: |
|
|
 Poobah
Joined: 15 May 2001 Posts: 7722
|
Multiple instances of the MDB (from multiple app servers) need to client connect to each queue.
Then a failure of any one MDB or any one Queue Manger does not impact new transactions being submitted. _________________ Peter Potkay
Keep Calm and MQ On |
|
Back to top |
|
 |
MarkB |
Posted: Mon Feb 06, 2012 9:51 am Post subject: |
|
|
Newbie
Joined: 06 Feb 2012 Posts: 3
|
OK Peter, let me play this out....
So each app server has an MDB configured to read messages from each queue managers local queue? i.e. One MDB class, 2 resource references, each bound to a local queue manager's instance of the queue.
Wouldn't this lead to the possibility of a specific message being consumed by more than one MDB, since both MDB's would be getting from the same queue? |
|
Back to top |
|
 |
Vitor |
Posted: Mon Feb 06, 2012 9:52 am Post subject: Re: Clustered MQ with Clustered WAS MDB - Configuration Ques |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
MarkB wrote: |
In the case where one MDB goes down (because of an unhandled poison message lets say), messages continue to be directed to both queue managers in the cluster, but are not being consumed off of one of the queues on one of the queue managers. |
That's not a very likely scenario; WAS provides inbuilt poison message support by honouring the backout threashold.
I'll leave others better qualified to talk about wizzy things you can do in WAS to restart or reconnect MDBs. In my world, monitoring detects applications going over & takes action. Like restarting them.
 _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
Vitor |
Posted: Mon Feb 06, 2012 9:55 am Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
MarkB wrote: |
Wouldn't this lead to the possibility of a specific message being consumed by more than one MDB, since both MDB's would be getting from the same queue? |
Only if there's something very odd going on. WMQ doesn't allow multiple applications to read the same message (if it did, no platform would ever be able to scale message consumers to handle the situation where messages are being sent faster than they can be consumed).
And by "very odd" I include some Java handle sharing stuff I wouldn't understand if you told me.
But I've had multiple MDB instances under WAS reading from a single queue & the last thing I worried about was 2 MDBs getting the same message. _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
MarkB |
Posted: Mon Feb 06, 2012 10:06 am Post subject: |
|
|
Newbie
Joined: 06 Feb 2012 Posts: 3
|
Thanks Vitor.
Looks like I was trying to solve a perceived rather than a real problem.
I appreciate both yours and Peter's help. |
|
Back to top |
|
 |
fjb_saper |
Posted: Mon Feb 06, 2012 2:16 pm Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
MarkB wrote: |
OK Peter, let me play this out....
So each app server has an MDB configured to read messages from each queue managers local queue? i.e. One MDB class, 2 resource references, each bound to a local queue manager's instance of the queue.
Wouldn't this lead to the possibility of a specific message being consumed by more than one MDB, since both MDB's would be getting from the same queue? |
Yes it would, but never at the same time.
Now all really depends on the handling of your poison message. If you have no handling in place, one by one your MDB's will stop as they try to process the poison message and fail.
If no poison message handling is in place (and bothresh is 0) the MDB will stop. To avoid taking messages while you fix the problem put-disable the queue. The cluster algorithm should then target the other available queues in the cluster.
Have fun  _________________ MQ & Broker admin |
|
Back to top |
|
 |
|