|
RSS Feed - WebSphere MQ Support
|
RSS Feed - Message Broker Support
|
Truncated Messages and the Backout Count |
« View previous topic :: View next topic » |
Author |
Message
|
PeterPotkay |
Posted: Mon Aug 05, 2002 7:26 pm Post subject: |
|
|
 Poobah
Joined: 15 May 2001 Posts: 7722
|
One way this can happen is if the application that gets triggered never opens the queue. It blew up before the MQOPEN for whatever reason.
Now we have 1 message on the queue and no MQCLOSE happening to force another trigger. As more message land, no more triggers, since the queue depth is not going from 0 to 1. The trigger interval save us in this spot, assuming the reason for the app blowing up before the MQOPEN was temprorary.
Or,
On the mainframe, say your app abends after retrieving the message. Somehow a few bad messages got on your queue. Your poisened message logic removes them after a couple of GETS cause the backout count exceeded your threshhold. Each time the message gets rolled back, the app is retriggered because of the MQCLOSE. Eventually you clear out the 2 or 3 bad messages to the exception queue, but in the meantime you abended so many times that your TCODE gets brought down. Now the trigger monitor can't start the app, but more (good) message keep landing on the queue. Again we have a situation where the queue is closed , the depth is going from 0+n to 0+n+1, and no trigger messages are being generated. The TCODE is restarted. If the trigger interval passes, the app will now automaticaly start up again.
The init queue can be full, in which case the trigger message go to the DLQ. Again as more message land on that closed triggered on first queue, no more trigger messages get generated, even as the init queue's depth came down.
There were a couple more situations that I came across a while back, but they escape me now. By the way, the trigger interval only applies to Trigger First queues, and since it is set at the QM level, you have to pick a value that keeps all your applications happy. (We chose 5 minutes (300000)). _________________ Peter Potkay
Keep Calm and MQ On |
|
Back to top |
|
 |
bduncan |
Posted: Mon Aug 05, 2002 8:55 pm Post subject: |
|
|
Padawan
Joined: 11 Apr 2001 Posts: 1554 Location: Silicon Valley
|
Thanks for the well illustrated examples. I was under the impression that the trigger interval was more of a catch-all, rather than only for these, shall we say, relatively rarer situations. I suppose it makes more sense that the trigger refires immediately on the MQCLOSE anyway, now that I think about it. It's just I'd had plenty of situations in the past where I ended up with queues filling up because the trigger wouldn't refire. Of course, being in the past it's hard to remember all the details of why the trigger didn't refire - so who knows... But it looks like your tests have put everything to rest  _________________ Brandon Duncan
IBM Certified MQSeries Specialist
MQSeries.net forum moderator |
|
Back to top |
|
 |
nimconsult |
Posted: Mon Aug 05, 2002 10:00 pm Post subject: |
|
|
 Master
Joined: 22 May 2002 Posts: 268 Location: NIMCONSULT - Belgium
|
By the way just for information:
You can allocate dynamic storage if you run under CICS by simply using EXEC CICS GETMAIN and assign the result to a char variable of your COBOL LINKAGE SECTION.
If you run under language environment you can also call CEEGTST (if I remember well, that was 3 years ago), making your code CICS-independent (the same function works both under CICS and batch environments)
(Yeah I know we are in MQ Forum, not Cobol forum ) _________________ Nicolas Maréchal
Senior Architect - Partner
NIMCONSULT Software Architecture Services (Belgium)
http://www.nimconsult.be |
|
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
|
|
|
|