| Author | Message | 
		
		  | manishpaltanwale | 
			  
				|  Posted: Mon Apr 28, 2014 6:19 am    Post subject: DLQ Handler on windows |   |  | 
		
		  | Newbie
 
 
 Joined: 20 Mar 2014Posts: 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 2005Posts: 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 2014Posts: 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 2003Posts: 20767
 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 2005Posts: 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 2001Posts: 5867
 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 2005Posts: 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 2005Posts: 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 2001Posts: 5867
 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 2014Posts: 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 2005Posts: 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 |  | 
		
		  |  | 
		
		  |  |