Author |
Message
|
manishpaltanwale |
Posted: Mon Apr 28, 2014 6:19 am Post subject: DLQ Handler on windows |
|
|
Newbie
Joined: 20 Mar 2014 Posts: 5
|
Can someone please tell me what is wrong in the steps which I am following on windows for DLQ Handler
1) crtmqm DLQ1
2) strmqm DLQ1
3) dspmq
4) runmqsc DLQ1
5) DEFINE QR('QR1') RNAME('QL2') RQMNAME('DLQ2') XMITQ('DLQ2')
6) define channel('DLQ1.DLQ2') CHLTYPE(SDR) CONNAME('LOCALHOST(1500)') XMITQ('DLQ2') TRPTYPE(TCP)
7) DEFINE QLOCAL('DLQ2') USAGE(XMITQ)
END
9) CRTMQM DLQ2
10) STRMQM DLQ2
11) DSPMQ
12) RUNMQSC DLQ2
13) DEFINE CHANNEL('DLQ1.DLQ2') CHLTYPE(RCVR) TRPTYPE(TCP)
14) DEFINE QLOCAL('QL2')
15) DEFINE LISTENER('LIS') TRPTYPE(TCP) PORT(1500)
16) ALTER QMGR DEADQ('SYSTEM.DEAD.LETTER.QUEUE')
17) ALTER QL('SYSTEM.DEAD.LETTER.QUEUE') TRIGGER TRIGTYPE(EVERY) PROCESS('TEST') INITQ('SYSTEM.DEFAULT.INITIATION.QUEUE')
1 DEFINE PROCESS('TEST') APPLICID('C:\dlq_test\Trigg.bat') APPLTYPE(WINDOWS)
19) end
20) create directory c:\dlq_test
21) inside this directory create Trigg.bat
22) Contents of Trigg.bat
cd "c:\Program Files (X86)\IBM\Websphere MQ\bin"
runmqdlq < C:\dlq_test\RULES.txt
23) create RULES.txt
INPUTQ('SYSTEM.DEAD.LETTER.QUEUE') INPUTQM('DLQ2') RETRYINT(5) WAIT(YES) REASON(MQRC_Q_FULL) ACTION(RETRY) RETRY(5)
24) runmqsc DLQ2
25) alter ql(QL2) maxdepth(4)
26) start listener(LIS)
27) start the trigeer monitor in another command window as follows:
runmqtrm -m DLQ2 -q SYSTEM.DEAD.LETTER.QUEUE
2 NOW PUT THE MESSAGES
amqsput QR1 DLQ1
29) get the messages
amqsget QL2 DLQ2
30) now check the depths of all the queues
31) I am able to see 8 messages on remote queue but no messages on dead letter queue. |
|
Back to top |
|
 |
PaulClarke |
Posted: Mon Apr 28, 2014 8:05 am Post subject: |
|
|
 Grand Master
Joined: 17 Nov 2005 Posts: 1002 Location: New Zealand
|
Is that a typo in your explanation or did you really issue the command
Quote: |
runmqtrm -m DLQ2 -q SYSTEM.DEAD.LETTER.QUEUE |
You don't want the trigger monitor processing your DLQ.
Cheers,
Paul. _________________ Paul Clarke
MQGem Software
www.mqgem.com |
|
Back to top |
|
 |
manishpaltanwale |
Posted: Mon Apr 28, 2014 8:09 am Post subject: |
|
|
Newbie
Joined: 20 Mar 2014 Posts: 5
|
I issues the command in separate command window |
|
Back to top |
|
 |
fjb_saper |
Posted: Mon Apr 28, 2014 8:12 am Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
PaulClarke wrote: |
Is that a typo in your explanation or did you really issue the command
Quote: |
runmqtrm -m DLQ2 -q SYSTEM.DEAD.LETTER.QUEUE |
You don't want the trigger monitor processing your DLQ.
Cheers,
Paul. |
According to his setup that should be the INIT q defined on the DLQ...
Also having a triggered DLQ makes no sense when the rules file contains WAIT(YES)...  _________________ MQ & Broker admin |
|
Back to top |
|
 |
PaulClarke |
Posted: Mon Apr 28, 2014 8:23 am Post subject: |
|
|
 Grand Master
Joined: 17 Nov 2005 Posts: 1002 Location: New Zealand
|
Indeed, a trigger monitor should only ever be told to process initiation queues.
As for triggering the DLQ handler I'm not totally certain whether it supports it but it doesn't seem like a bad idea if it does. Someone has to start the DLQ handler initially and restart it if it crashes, it may as well be the trigger monitor.
Cheers,
Paul. _________________ Paul Clarke
MQGem Software
www.mqgem.com |
|
Back to top |
|
 |
zpat |
Posted: Mon Apr 28, 2014 8:31 am Post subject: |
|
|
 Jedi Council
Joined: 19 May 2001 Posts: 5866 Location: UK
|
I have the DLQ handler defined as a QM service that starts with the QM. _________________ Well, I don't think there is any question about it. It can only be attributable to human error. This sort of thing has cropped up before, and it has always been due to human error. |
|
Back to top |
|
 |
PaulClarke |
Posted: Mon Apr 28, 2014 9:09 am Post subject: |
|
|
 Grand Master
Joined: 17 Nov 2005 Posts: 1002 Location: New Zealand
|
That works too I'm sure. The downside though is that you have a DLQ handler running all day everyday regardless of whether anyone actually puts a message to the DLQ.
As I said, I don't actually know whether the DLQ handler supports being triggered but it seems a prime candidate to me. The whole point of triggering is that it alleviates the need to have programs running all day which are only rarely needed.
Cheers,
P. _________________ Paul Clarke
MQGem Software
www.mqgem.com |
|
Back to top |
|
 |
Vitor |
Posted: Mon Apr 28, 2014 10:22 am Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
PaulClarke wrote: |
As I said, I don't actually know whether the DLQ handler supports being triggered |
It does. _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
zpat |
Posted: Mon Apr 28, 2014 10:36 am Post subject: |
|
|
 Jedi Council
Joined: 19 May 2001 Posts: 5866 Location: UK
|
I guess it's only sitting in a MQGET WAIT, much like a trigger monitor.
The problem with trigger on a DLQ, is that if the DLQ handler does not clear the queue (and the rules may not cover all eventualities) then it won't re-trigger.
Seems better to use the DLQ handler option to re-scan the queue at intervals. _________________ Well, I don't think there is any question about it. It can only be attributable to human error. This sort of thing has cropped up before, and it has always been due to human error. |
|
Back to top |
|
 |
manishpaltanwale |
Posted: Wed Apr 30, 2014 7:30 pm Post subject: |
|
|
Newbie
Joined: 20 Mar 2014 Posts: 5
|
Hi Paul,
That was not a typo.I did execute the command.Can you please let me know what's the problem.
Thanks!! |
|
Back to top |
|
 |
PaulClarke |
Posted: Wed Apr 30, 2014 9:25 pm Post subject: |
|
|
 Grand Master
Joined: 17 Nov 2005 Posts: 1002 Location: New Zealand
|
Well, as I said before a trigger monitor should be passed the name of an initiation queue, not a dead letter queue. The purpose of a trigger monitor is to read an initiation queue and start processes to consume the application processes. If you give a trigger monitor a dead letter queue to process then I would imagine it would either
- Put the message to the DLQ because it is a badly formed trigger message - this would cause an infinite busy loop
- Just discard the 'badly' formed trigger message
Either way it is unlikely to end well.
May I suggest you have a read in the MQ manuals about triggering and how it works.
Regards,
Paul. _________________ Paul Clarke
MQGem Software
www.mqgem.com |
|
Back to top |
|
 |
|