Author |
Message
|
paul0al |
Posted: Thu Aug 08, 2002 7:19 am Post subject: Dead letter queues |
|
|
Apprentice
Joined: 30 May 2002 Posts: 26
|
Why doesn't MQSeries for Windows support dead letter queue? I have a VB program that sends messages to a queue, but the program quits when queue becomes full. I need the program to continue even if the remaining messages end up in the dead letter queue. Is there a windows alternative that offers the same benefits as a dead letter queue?
thanks |
|
Back to top |
|
 |
pankajg |
Posted: Thu Aug 08, 2002 9:09 am Post subject: |
|
|
Acolyte
Joined: 11 Oct 2001 Posts: 53
|
Try Defining the system DLQ As your Qmgr's DLQ.
I think it does not happen by default , u have to do it explicitly. _________________ Regards
Pankaj |
|
Back to top |
|
 |
bower5932 |
Posted: Thu Aug 08, 2002 10:09 am Post subject: |
|
|
 Jedi Knight
Joined: 27 Aug 2001 Posts: 3023 Location: Dallas, TX, USA
|
MQ on Windows does support the dead letter queue. When you create your queue manager, you have to specify what queue to use as the DLQ. When you do create the qmgr, a SYSTEM.DEAD.LETTER.QUEUE is created. It just doesn't associate this queue as the qmgr's DEADQ unless you tell it to. If you've already created your qmgr, you can use runmqsc and the alter qmgr command to alter the DEADQ that your qmgr uses. |
|
Back to top |
|
 |
paul0al |
Posted: Thu Aug 08, 2002 10:54 am Post subject: |
|
|
Apprentice
Joined: 30 May 2002 Posts: 26
|
I read this document from IBM that said "Dead-Letter queues are not supported on MQSeries for Windows." You can take a look at www-3.ibm.com/software/ts/mqseries/library/ manualsa/csqzae05/csqzae050i.htm I also tried setting up a dead-letter queue for use with my queue manager but my program still fails when the queue runs out of space.
thanks |
|
Back to top |
|
 |
bduncan |
Posted: Thu Aug 08, 2002 11:00 am Post subject: |
|
|
Padawan
Joined: 11 Apr 2001 Posts: 1554 Location: Silicon Valley
|
paul0al,
What you read was referring to MQSeries for Windows, as opposed to MQSeries for NT, Win2K, etc... The MQSeries for Windows product is quite old (didn't get past 2.1 I believe). All MQSeries v5 products for all platforms support dead letter queues.
From what you wrote it sounds like you were able to create one - but things broke when it filled up? This is going to be the case. If you application does something which causes messages to go the dead letter queue, the queue manager will put them there for reprocessing later (with a dead letter handler). In the meantime you application can continue to run. However, when you fill up the dead letter queue for a queue manager, all sorts of bad things can happen, depending on whether you are putting the messages locally or from some other queue manager... _________________ Brandon Duncan
IBM Certified MQSeries Specialist
MQSeries.net forum moderator |
|
Back to top |
|
 |
RogerLacroix |
Posted: Thu Aug 08, 2002 8:17 pm Post subject: |
|
|
 Jedi Knight
Joined: 15 May 2001 Posts: 3264 Location: London, ON Canada
|
Paul0al,
Brandon is right about MQSeries for Windows (originally called Leaf Node). It was designed for laptop users who were not always connected to a network but had an application that required MQ access. Therefore, Leaf Node implemented a partial queue manager. Hence, the dead letter queue was not included - as per the docs you were reading.
We are assuming that you read the wrong manual.
As requested, is this a local or remote queue that your VB application is putting the messages to? Because your answer will make a difference to our answer.
- If you are putting the messages to a remote queue, AND if a dead letter queue is defined on the remote queue manager, then when the queue becomes full the queue manager will automatically put the next message(s) onto the dead letter queue.
- If you are putting the messages to a local queue, a dead letter queues is NOT used. But rather when the queue becomes full, the queue manager will return a reason code of 2053 (X'805') MQRC_Q_FULL. Therefore, it is up to the VB application to determine what to do next (e.g. put messages to another queue or exit). Or you can set the maximum queue depth to a higher number!!!
The bigger question is "why isn't the receiver application running?".
later
Roger Lacroix
Enterprise Architect
Capitalware Inc.
http://www.capitalware.biz
----------------------------------------
IBM Certified Specialist - MQSeries
IBM Certified Developer - MQSeries
IBM Certified Solutions Expert - MQSeries
---------------------------------------- |
|
Back to top |
|
 |
Chris123 |
Posted: Thu Apr 17, 2003 3:20 am Post subject: |
|
|
Novice
Joined: 14 Apr 2003 Posts: 11
|
No wonder I've been confused reading the MQ Information Centre.
I never realised that MQSeries for Windows was completely different from MQSeries for Windows NT. I thought the former was just shorthand for all Windows platforms, and the latter was old documentation pre-W2k and XP. That puts a whole new slant on things like the following from the Info Centre for MQ 5.2.1:
Quote: |
3. Dead-letter queue
If a message cannot be delivered or returned, it is put on to the dead-letter queue. You can use the DLQ handler to process the message. This is described in the MQSeries System Administration book for V5.1 of MQSeries for AIX, HP-UX, OS/2 Warp, Sun Solaris, and Windows NT, the MQSeries for AS/400 System Administration book for MQSeries for OS/400, and in the MQSeries for OS/390 System Administration Guide for OS/390.
If the dead-letter queue is not available, the sending MCA leaves the message on the transmission queue, and the channel stops. On a fast channel, nonpersistent messages that cannot be written to a dead-letter queue are lost.
Dead-letter queues are not supported on MQSeries for Windows.
|
Thanks Roger and Brandon.
Cheers,
Chris |
|
Back to top |
|
 |
Chris123 |
Posted: Thu Apr 17, 2003 5:07 am Post subject: |
|
|
Novice
Joined: 14 Apr 2003 Posts: 11
|
On a similar theme, the same page of the Info Centre says
Quote: |
Message-retry is not available on MQSeries for OS/390, MQSeries for Windows, or MQSeries for VSE/ESA |
Does this really mean MQSeries for Windows or MQSeries for Windows NT (2000, XP, etc)?
Cheers,
Chris |
|
Back to top |
|
 |
bduncan |
Posted: Thu Apr 17, 2003 11:05 am Post subject: |
|
|
Padawan
Joined: 11 Apr 2001 Posts: 1554 Location: Silicon Valley
|
I don't think it is referring to MQSeries based on the NT platform, i.e., NT4, 2000, XP, etc...
"MQSeries for Windows" is a much older product which isn't released any longer. It was made for Windows 3.1 and Windows 95, and is basically at the level of MQSeries v2. Check the following link on the IBM website - funny, there is no link to it from the IBM site anymore, but luckily google cached it at some point:
http://www-3.ibm.com/software/ts/mqseries/platforms/win/ _________________ Brandon Duncan
IBM Certified MQSeries Specialist
MQSeries.net forum moderator |
|
Back to top |
|
 |
tillywern |
Posted: Mon Apr 21, 2003 9:34 am Post subject: Dead letter queues used only in distributed messaging |
|
|
 Centurion
Joined: 28 Jan 2003 Posts: 109 Location: Colorado
|
My understanding may be old but as I recall Dead letter queues are only used in distributed queueing. If an application is connected to a local queue manager and issues a put to a full queue the aplication will error...
The DEAD.LETTER.QUEUE is used by a queue manager when recieving traffic from another queue manager that it cannot place onto a local queue due to some error.
Don't expect the DLQ to do anything when an applicaiton is running local. |
|
Back to top |
|
 |
MichaelR |
Posted: Mon Apr 21, 2003 10:33 am Post subject: |
|
|
Apprentice
Joined: 20 May 2002 Posts: 37 Location: Tampa
|
There are certain situations where the DLQ is used in a local queuing scheme. One that comes to mind involves Confirmation of Delivery
to a reply queue specified which is either "full" or has been deleted (i.e. TDRQ).
For the most part, though, local applications would/should receive a "2053" when attempting to directly MQPUT messages to a queue who has reached its defined maximum number of messages value. |
|
Back to top |
|
 |
jefflowrey |
Posted: Mon Apr 21, 2003 12:17 pm Post subject: |
|
|
Grand Poobah
Joined: 16 Oct 2002 Posts: 19981
|
One situation where messages will go onto a DLQ from a local application (as I understand it) is if an application attempts to back out a message onto an undefined backout queue. |
|
Back to top |
|
 |
HrothgarV |
Posted: Thu Apr 24, 2003 6:30 am Post subject: |
|
|
Novice
Joined: 07 Apr 2003 Posts: 17
|
[quote]
[color=red]
- If you are putting the messages to a remote queue, AND if a dead letter queue is defined on the remote queue manager, then when the queue becomes full the queue manager will automatically put the next message(s) onto the dead letter queue.
[/color]
[/quote]
is this correct?
here's the scenario:
QM A is the local queue manager (with its own default dead-letter queue)
QM B is the remote queue manager (also with its own dead-letter queue)
if you are try to put a message to a remote queue in QM B (via a local definition of that queue in QM A) and fails, the message will go to the dead-letter queue of QM B ??? and not in the dead-letter queue of QM A ??? |
|
Back to top |
|
 |
mgrabinski |
Posted: Thu Apr 24, 2003 11:05 pm Post subject: |
|
|
Master
Joined: 16 Oct 2001 Posts: 246 Location: Katowice, Poland
|
You will have messages in local DLQ if you set the CONVERT(YES) attribute of a channel, and the conversion fails. _________________ Marcin Grabinski <>< |
|
Back to top |
|
 |
|