Author |
Message
|
byrner |
Posted: Wed May 11, 2011 11:01 am Post subject: Triggering |
|
|
Newbie
Joined: 11 May 2011 Posts: 8
|
We have written an application that uses WMQ on an iSeries. We are using model queues with triggering defined on them. In general terms everything is working well however there is a sporadic problem which occurs a couple of times per day. The QName field in the Trigger Message is incorrect so the job submitted by the trigger monitor fails because the queue it is trying to read doesn't exist.
The application that is creating the dynamic queues is an ASP.NET web application.
Has anybody experienced anything like this ? |
|
Back to top |
|
 |
shashivarungupta |
Posted: Wed May 11, 2011 11:41 am Post subject: |
|
|
 Grand Master
Joined: 24 Feb 2009 Posts: 1343 Location: Floating in space on a round rock.
|
Trigger monitor keeps an eye on initQ !
QName is the 'Name of triggered queue' !
What are the values of these two in your case ?
 _________________ *Life will beat you down, you need to decide to fight back or leave it. |
|
Back to top |
|
 |
byrner |
Posted: Wed May 11, 2011 12:39 pm Post subject: |
|
|
Newbie
Joined: 11 May 2011 Posts: 8
|
Our initq is called GATEWAY_GLOBAL_INITQ and the trigger monitor processes this queue. Our trigger monitor is an RPGLE program that submits a job per trigger message. The submitted job processes the queue that caused the creation of the trigger i.e. the queue identified by the QName property of the trigger message. 99.9% percent of the time it works perfectly however on the odd occasion the QName property has a queue name that does not exist i.e. the queue was created days ago. |
|
Back to top |
|
 |
byrner |
Posted: Wed May 11, 2011 1:06 pm Post subject: |
|
|
Newbie
Joined: 11 May 2011 Posts: 8
|
forgot to mention the triggered queue is a temporary dynamic queue so the names are random as such e.g. GATEWAY_REQUEST_ME211_002342234 |
|
Back to top |
|
 |
mqjeff |
Posted: Wed May 11, 2011 3:02 pm Post subject: |
|
|
Grand Master
Joined: 25 Jun 2008 Posts: 17447
|
It seems an odd thing to use a temporary dynamic queue as a trigger queue.
Is there a particular reason you can't sit in a get-with-wait instead?
Is it a transactional concern? |
|
Back to top |
|
 |
fjb_saper |
Posted: Wed May 11, 2011 8:21 pm Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
Is there a reason for the separation through the dynamic queues?
Couldn't you process them as they come from a static queue? I suppose we are talking about the same transaction being performed for all the dynamic queues being created from the same model queue...
Why not have a single static queue instead of a model queue? Is there a security concern about message separation and access?
Have fun  _________________ MQ & Broker admin |
|
Back to top |
|
 |
Mr Butcher |
Posted: Wed May 11, 2011 11:08 pm Post subject: |
|
|
 Padawan
Joined: 23 May 2005 Posts: 1716
|
Quote: |
however on the odd occasion the QName property has a queue name that does not exist i.e. the queue was created days ago |
but when was the queue purged? how do the queues get purged? what will happen, if a queue was created and holds a message, but it is not processed? do you have any of these leftovers? will the queue stay? is there a cleanup process? will it somehow cause a re-trigger? is there maybe something that purges queue queue between the re-triggering and the processing? _________________ Regards, Butcher |
|
Back to top |
|
 |
byrner |
Posted: Thu May 12, 2011 12:25 am Post subject: |
|
|
Newbie
Joined: 11 May 2011 Posts: 8
|
The multiple queues is for routing and concurrency purposes.
There are no transactional concerns. We are using WMQ for synchronous messaging.
The software is live now so redesigning isn't really an option. The problem has only started occurring recently. The operations team would stop and restart MQ on a nightly basis and at the weekend the box is IPL'd. On Monday the problem did not occur which makes me wonder if its something to do with the MQ restart process. |
|
Back to top |
|
 |
shashivarungupta |
Posted: Thu May 12, 2011 1:00 am Post subject: |
|
|
 Grand Master
Joined: 24 Feb 2009 Posts: 1343 Location: Floating in space on a round rock.
|
byrner wrote: |
The operations team would stop and restart MQ on a nightly basis |
YOu mean, MQ Qmgr bounce every night ?
Or the trigger monitor ?
It is surprising to me that MQ Qmgr is being bounced every night. ( same would you do / suggest your operation team to do in Prod. servers ? )
If something is wrong and you don't have a solution for that ( as Mr. Butcher said ) then you need to check the trigger monitor process and triggered queue and msgs that are lying on it and the error which is responsible for not to process the msgs on queue.
By the way, you instruct to bounce the mq qmgr to flush off the temporary dynamic queues ?
You can look at the properties of temporary dynamic queue and its existence, may be these are overlooked and creating the issues for you. Like "Attempts to access a logically deleted queue (other than to close it) fail with reason code MQRC_Q_DELETED."
HERE
 _________________ *Life will beat you down, you need to decide to fight back or leave it. |
|
Back to top |
|
 |
byrner |
Posted: Thu May 12, 2011 1:30 am Post subject: |
|
|
Newbie
Joined: 11 May 2011 Posts: 8
|
qmgr is bounced every night !
theres a whole bunch of nightly jobs to run so they essentially ring fence the box by taking down a lot of the subsystems.
the trigger monitor is configured to start with the queue manager although I think as the trigger monitor is getting in the way of MQ ending cleanly.
Can you elaborate on the flush dynamic queues ? |
|
Back to top |
|
 |
shashivarungupta |
Posted: Thu May 12, 2011 1:45 am Post subject: |
|
|
 Grand Master
Joined: 24 Feb 2009 Posts: 1343 Location: Floating in space on a round rock.
|
Dynamic queues can be of two types : temporary and permanent dynamic queues.
Temporary Dynamic Queues are deleted when the queue manager is started. They are non-recoverable.
Also Check this
byrner wrote: |
I think as the trigger monitor is getting in the way of MQ ending cleanly. |
I don't think so.
Suppose you have runmqtrm on a qmgr and its initq, and its waiting for trigger msg, by the time you do end your qmgr (say) 'endmqm QMGR1' then before qmgr ends normally, it would end the trigger monitor ! _________________ *Life will beat you down, you need to decide to fight back or leave it. |
|
Back to top |
|
 |
bruce2359 |
Posted: Thu May 12, 2011 5:34 am Post subject: |
|
|
 Poobah
Joined: 05 Jan 2008 Posts: 9469 Location: US: west coast, almost. Otherwise, enroute.
|
shashivarungupta wrote: |
Dynamic queues can be of two types : temporary and permanent dynamic queues.
Temporary Dynamic Queues are deleted when the queue manager is started.
|
Temporary dynamic queues are also closed/deleted when the application MQCLOSE's them, and when the application MQDISConnects, and when the application ends. _________________ 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 |
|
 |
shashivarungupta |
Posted: Thu May 12, 2011 9:51 am Post subject: |
|
|
 Grand Master
Joined: 24 Feb 2009 Posts: 1343 Location: Floating in space on a round rock.
|
bruce2359 wrote: |
shashivarungupta wrote: |
Dynamic queues can be of two types : temporary and permanent dynamic queues.
Temporary Dynamic Queues are deleted when the queue manager is started.
|
Temporary dynamic queues are also closed/deleted when the application MQCLOSE's them, and when the application MQDISConnects, and when the application ends. |
(Link was there for reference, that's why)  _________________ *Life will beat you down, you need to decide to fight back or leave it. |
|
Back to top |
|
 |
zpat |
Posted: Thu May 12, 2011 9:57 am Post subject: |
|
|
 Jedi Council
Joined: 19 May 2001 Posts: 5866 Location: UK
|
Set the QMGR TRGINT value so that it re-triggers if needed, as a precaution. |
|
Back to top |
|
 |
byrner |
Posted: Fri May 13, 2011 12:16 am Post subject: |
|
|
Newbie
Joined: 11 May 2011 Posts: 8
|
All the dynamic queues are temporary dynamic. However we have seen instances where a trigger message will contain a temporary dynamic queue name that was created almost a week ago. Bearing in mind we bounce the qmgr every evening and the asp.net application that creates the queues has its application pools recycled every morning at 6:30pm. |
|
Back to top |
|
 |
|