|
RSS Feed - WebSphere MQ Support
|
RSS Feed - Message Broker Support
|
When does a message go to a DLQ? |
« View previous topic :: View next topic » |
Author |
Message
|
Vitor |
Posted: Fri Apr 27, 2018 5:12 am Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
The key point here is that messages will arrive on the DLQ from the software when something's wrong with the MQ topology. Your MQ admins will undoubtedly have some kind of monitoring on the DLQ to alert them when this happens. Be sure they're onboard with your plan before an application starts using it. _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
mvic |
Posted: Fri Apr 27, 2018 7:47 am Post subject: |
|
|
 Jedi
Joined: 09 Mar 2004 Posts: 2080
|
|
Back to top |
|
 |
mvic |
Posted: Fri Apr 27, 2018 7:54 am Post subject: |
|
|
 Jedi
Joined: 09 Mar 2004 Posts: 2080
|
Vitor wrote: |
messages will arrive on the DLQ from the software when something's wrong with the MQ topology |
You can see a message on a DLQ from a receiving MCA if the destination queue is full.
That probably falls halfway inbetween the admins and the app team, as far as responsibility is concerned.
Some people do not configure DLQs, or configure their channels not to use them, as they do have downsides. |
|
Back to top |
|
 |
Vitor |
Posted: Fri Apr 27, 2018 8:53 am Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
mvic wrote: |
Vitor wrote: |
messages will arrive on the DLQ from the software when something's wrong with the MQ topology |
You can see a message on a DLQ from a receiving MCA if the destination queue is full. |
I take your point, though I would still tend to the "something wrong with the MQ topology" in this case; the queue hasn't been sized correctly to account either for the slowness of the consuming app or a period of consuming app downtime. _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
bruce2359 |
Posted: Fri Apr 27, 2018 11:44 am Post subject: |
|
|
 Poobah
Joined: 05 Jan 2008 Posts: 9470 Location: US: west coast, almost. Otherwise, enroute.
|
"Must?" I stand (sit, actually) by my previous post:
bruce2359 wrote: |
A DLH is not required to successfully MQPUT a message in the DLQ. |
There is nothing special about the DLQ that prevents an app from puting a message in the DLQ without a DLH. I understand that a DLH is necessary for the dead-letter handler ... _________________ I like deadlines. I like to wave as they pass by.
ב''ה
Lex Orandi, Lex Credendi, Lex Vivendi. As we Worship, So we Believe, So we Live. |
|
Back to top |
|
 |
mvic |
Posted: Fri Apr 27, 2018 12:40 pm Post subject: |
|
|
 Jedi
Joined: 09 Mar 2004 Posts: 2080
|
bruce2359 wrote: |
There is nothing special about the DLQ that prevents an app from puting a message in the DLQ without a DLH. I understand that a DLH is necessary for the dead-letter handler ... |
Well, yes and no. It is counter-productive to even consider omitting the DLH.
There is something special about a DLQ, which is: it must be processed by a handler. And, the handler will need to know the pieces of information that are contained in the DLH (qname, reasoncode, putapplname, etc, etc.).
Actually my purpose in mentioning the DLH in the first place was to remind the OP about the extra things to think about if the application wants to use the DLQ directly.
One of these is: you must include a DLH. It's important to know, and this does take some programming effort, especially if it's your first time writing code to prepend MQ headers to your data.
And if you mess up adding the header, your MQPUT might indeed fail with MQRC_HEADER_ERROR or something similar.
I'll concede this point: if you get that reasoncode or similar back from your MQPUT to the DLQ you should probably just MQPUT the message to the DLQ directly, on the basis that it's better to do that than lose the message.
But get ready for your MQ admin to complain at you that you made their dead letter handler fail. |
|
Back to top |
|
 |
fjb_saper |
Posted: Fri Apr 27, 2018 9:10 pm Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
mvic wrote: |
bruce2359 wrote: |
There is nothing special about the DLQ that prevents an app from puting a message in the DLQ without a DLH. I understand that a DLH is necessary for the dead-letter handler ... |
Well, yes and no. It is counter-productive to even consider omitting the DLH.
There is something special about a DLQ, which is: it must be processed by a handler. And, the handler will need to know the pieces of information that are contained in the DLH (qname, reasoncode, putapplname, etc, etc.).
Actually my purpose in mentioning the DLH in the first place was to remind the OP about the extra things to think about if the application wants to use the DLQ directly.
One of these is: you must include a DLH. It's important to know, and this does take some programming effort, especially if it's your first time writing code to prepend MQ headers to your data.
And if you mess up adding the header, your MQPUT might indeed fail with MQRC_HEADER_ERROR or something similar.
I'll concede this point: if you get that reasoncode or similar back from your MQPUT to the DLQ you should probably just MQPUT the message to the DLQ directly, on the basis that it's better to do that than lose the message.
But get ready for your MQ admin to complain at you that you made their dead letter handler fail. |
Or come back at you talking about header chaining and throwing the pcf header classes at you!!!  _________________ MQ & Broker admin |
|
Back to top |
|
 |
bruce2359 |
Posted: Sat Apr 28, 2018 5:07 am Post subject: |
|
|
 Poobah
Joined: 05 Jan 2008 Posts: 9470 Location: US: west coast, almost. Otherwise, enroute.
|
Ouch. _________________ I like deadlines. I like to wave as they pass by.
ב''ה
Lex Orandi, Lex Credendi, Lex Vivendi. As we Worship, So we Believe, So we Live. |
|
Back to top |
|
 |
gbaddeley |
Posted: Sun Apr 29, 2018 4:58 pm Post subject: |
|
|
 Jedi Knight
Joined: 25 Mar 2003 Posts: 2538 Location: Melbourne, Australia
|
mvic wrote: |
Actually my purpose in mentioning the DLH in the first place was to remind the OP about the extra things to think about if the application wants to use the DLQ directly.
One of these is: you must include a DLH. It's important to know, and this does take some programming effort, especially if it's your first time writing code to prepend MQ headers to your data.
And if you mess up adding the header, your MQPUT might indeed fail with MQRC_HEADER_ERROR or something similar.
I'll concede this point: if you get that reasoncode or similar back from your MQPUT to the DLQ you should probably just MQPUT the message to the DLQ directly, on the basis that it's better to do that than lose the message.
But get ready for your MQ admin to complain at you that you made their dead letter handler fail. |
This adds complexity to the app design and additional support processes that involves both MQ admin and app support. As an MQ designer, if an app suggested using the qmgr's DLQ, I would recommend against it. I think a better alternative is for the app to have their own DLQ and handler, or if this is not suitable, have their own "ERROR" or "BACKOUT" queue(s), and process them accordingly. _________________ Glenn |
|
Back to top |
|
 |
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|
|
|