Author |
Message
|
WingCommanderBadger |
Posted: Wed Apr 04, 2007 3:51 am Post subject: IBM's JMS Implementation - Dead Letter Queue access |
|
|
 Apprentice
Joined: 06 Sep 2005 Posts: 32 Location: London, UK
|
I'm currently working with a client who will remotely access our Queue Manager using JMS. However, during testing we have noticed that there appears to be some default behaviour built into IBM's JMS Implementation regarding Dead Letter Queues:
* There seems to be a default backout threshold of 20
* After the threshold is met, an attempt is made to put the message on to the default dead letter queue
Our issue is that our client has queried whether he can change this behaviour, as he wishes to use different values for the threshold and the queue messages are backed out to. From what I can see, he cannot change either of these values, but was wondering if anyone else out there had successfully attempted such a thing.
We are using MQ v6.0.2.0 and the associated JMS libraries. |
|
Back to top |
|
 |
jefflowrey |
Posted: Wed Apr 04, 2007 3:58 am Post subject: |
|
|
Grand Poobah
Joined: 16 Oct 2002 Posts: 19981
|
How it can be changed depends quite a lot on what kind of environment the remote application is running under.
If it's under an app server (which I would hope, given that JMS is a Java Enterprise specification best used in a Java Enterprise container), then you can configure the properties of the various components in the app server to control this.
Otherwise, look at the MQ documentation and the "Backout Retry Queue". _________________ I am *not* the model of the modern major general. |
|
Back to top |
|
 |
WingCommanderBadger |
Posted: Wed Apr 04, 2007 4:03 am Post subject: |
|
|
 Apprentice
Joined: 06 Sep 2005 Posts: 32 Location: London, UK
|
Our client wishes to use Weblogic App Server and claims that he cannot configure these values. What relevant part of the JMS API is exposed to an App Server that is not exposed to a programmer who just wishes to use a standalone JMS Client? |
|
Back to top |
|
 |
jefflowrey |
Posted: Wed Apr 04, 2007 4:12 am Post subject: |
|
|
Grand Poobah
Joined: 16 Oct 2002 Posts: 19981
|
It's not a matter of what parts of the API are exposed, it's a matter of whether or not the container services are available or not.
I assume your client is trying to GET messages, and then throwing errors when the messages can't be processed. The backout/retry under the JEE/J2EE situation is controlled using the settings on the MDB and in the JNDI configuration.
I'm sure someone who remembers these things off the top of their head will be along in a bit. _________________ I am *not* the model of the modern major general. |
|
Back to top |
|
 |
fjb_saper |
Posted: Wed Apr 04, 2007 1:44 pm Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
You need following configurations:
A) Bo threshold a set on queue, a > 0
B) Retry threshold b set on MDB with b > a
C) If the backout queue has not been specified on the queue the message is put to the DLQ RC 2063 or something like it...
Finally you need to remember that using IBM WebSphere Application Server the MDB handles this automatically for you.
With WebLogic you might have to add that intelligence into the MDB code...
Enjoy  _________________ MQ & Broker admin |
|
Back to top |
|
 |
WingCommanderBadger |
Posted: Thu Apr 05, 2007 12:32 am Post subject: |
|
|
 Apprentice
Joined: 06 Sep 2005 Posts: 32 Location: London, UK
|
OK, this is interesting but we get the same behaviour even when we don't use WebLogic and use a standalone Java/JMS Client instead. One thing I forgot to mention previously was that the Dead Letter Queue is not actually specified at all in our JNDI repository so I'm wondering where this info is gathered from. I strongly suspect that IBM have built in some (possibly undocumented) functionality into their JMS implementation that is not easily changed - after decompiling the libraries (sorry IBM) I can see some evidence that this is the case. I was just hoping that someone would confirm this. I think the next step is to post to IBM directly. |
|
Back to top |
|
 |
jefflowrey |
Posted: Thu Apr 05, 2007 3:27 am Post subject: |
|
|
Grand Poobah
Joined: 16 Oct 2002 Posts: 19981
|
It's standard behavior for a message that has crossed the backout threshold on a queue that does not have a backout queue defined, for the message to either be discarded if non-persistent or placed on the DLQ If persistent.
This is regardless of the API.
Change your queue to specify a backout queue. _________________ I am *not* the model of the modern major general. |
|
Back to top |
|
 |
|