Author |
Message
|
hdilsky1 |
Posted: Thu Feb 04, 2010 12:46 pm Post subject: |
|
|
Novice
Joined: 04 Feb 2010 Posts: 10 Location: Dallas,TX
|
Vitor thank you so much for your response. Sorry, I didn't specify the OS.
Even your response is not very friendly (I understand the stress because of stupid questions like mine) I still would like to give you more info.
have a PROD problem. I noticed that local queue had maximum # of messages 5000. The Java program 1 sends a message to another program and if it didn't get response in 5 sec it sends another message to program 2. The message from program 2 came after 5 sec put in local queue. I want to remove old messages using the steps in this article:
http://www-01.ibm.com/support/docview.wss?rs=171&context=SSFKSJ&dc=DB520&uid=swg21288579&loc=en_US&cs=utf-8&lang=en.
So how to setup ExpiryInterval OS is Windows2003.
Thank you,
Henry |
|
Back to top |
|
 |
hdilsky1 |
Posted: Thu Feb 04, 2010 12:51 pm Post subject: |
|
|
Novice
Joined: 04 Feb 2010 Posts: 10 Location: Dallas,TX
|
Vital, I am sorry for placing my Q. in ReadFirst |
|
Back to top |
|
 |
Vitor |
Posted: Thu Feb 04, 2010 1:01 pm Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
hdilsky1 wrote: |
So how to setup ExpiryInterval OS is Windows2003.
|
Well I've learned something - I thought ExpiryInterval was ignored on distributed platforms. This makes it a good day.
I stand by my previous comment - why do you want to set it? What's wrong with the default value (as specified in the link you posted)?
I should also point out
1) If the limit of 5000 messages on the local queue is so small that you feel the need to clear off old messages more quickly then you probably need to increase the 5000 message limit
2) If program 2 (in your example) reads the queue at any point either for the original message but too late, or for the next message this removes the old messages irrespective of the expiry interval. As the link you posted clearly says, ExpiryInterval is only relevant for periods where there is not MQGET activity
3) If (as I suspect) you've not set the messages to expire then no changes you make will have the slightest effect and the messages will remain on the queue. _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
hdilsky1 |
Posted: Thu Feb 04, 2010 1:19 pm Post subject: |
|
|
Novice
Joined: 04 Feb 2010 Posts: 10 Location: Dallas,TX
|
I suspect that ExpiryInterval setup to 0, which means message - never expired and I, also, suspect it should be setup in the program 1 (Java app running on WAS). First, I want to check the value of this parameter and then - to reset it to 900 (sec) because the program 1 does not care about messages older than 5 sec |
|
Back to top |
|
 |
mvic |
Posted: Thu Feb 04, 2010 1:27 pm Post subject: |
|
|
 Jedi
Joined: 09 Mar 2004 Posts: 2080
|
hdilsky1 wrote: |
So how to setup ExpiryInterval OS is Windows2003. |
Try:
Code: |
amqmdain reg YOURQMNAME -c add -s TuningParameters -v ExpiryInterval=300 |
|
|
Back to top |
|
 |
mvic |
Posted: Thu Feb 04, 2010 1:33 pm Post subject: |
|
|
 Jedi
Joined: 09 Mar 2004 Posts: 2080
|
hdilsky1 wrote: |
I suspect that ExpiryInterval setup to 0, which means message - never expired |
Messages only expire after their Expiry time has elapsed.
The time is measured from the time the message is put.
Changing ExpiryInterval in the queue manager will not change this fact.
If applications are not servicing their queue adequately then this is not fixed by making the messages expire - it is solved by fixing the application or (if the concurrency model supports it) running duplicate copies of the program against the same queue. |
|
Back to top |
|
 |
hdilsky1 |
Posted: Thu Feb 04, 2010 1:33 pm Post subject: |
|
|
Novice
Joined: 04 Feb 2010 Posts: 10 Location: Dallas,TX
|
|
Back to top |
|
 |
bruce2359 |
Posted: Thu Feb 04, 2010 3:35 pm Post subject: Re: How to find and open a mq.ini file? |
|
|
 Poobah
Joined: 05 Jan 2008 Posts: 9469 Location: US: west coast, almost. Otherwise, enroute.
|
Quote: |
As the link you posted clearly says, ExpiryInterval is only relevant for periods where there is not MQGET activity |
This is an odd statement.
It is possible that an application program is processing messages as quickly as it can from a queue, but not quick enough to get a msg with a short expiry value. _________________ 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 |
|
 |
bruce2359 |
Posted: Thu Feb 04, 2010 4:18 pm Post subject: |
|
|
 Poobah
Joined: 05 Jan 2008 Posts: 9469 Location: US: west coast, almost. Otherwise, enroute.
|
Quote: |
I suspect that ExpiryInterval setup to 0, which means message - never expired ... |
From the APR: Expiry (MQLONG) "MQEI_UNLIMITED The message has an unlimited expiration time."
From the Constants manual: "MQEI_UNLIMITED value -1." Not zero.
Since the expiry period is in 1/10th of a second, then 0 means the message expires pretty soon after being put to the queue. I haven't tested this theory, however. _________________ 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 |
|
 |
Vitor |
Posted: Thu Feb 04, 2010 6:58 pm Post subject: Re: How to find and open a mq.ini file? |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
bruce2359 wrote: |
Quote: |
As the link you posted clearly says, ExpiryInterval is only relevant for periods where there is not MQGET activity |
This is an odd statement.
It is possible that an application program is processing messages as quickly as it can from a queue, but not quick enough to get a msg with a short expiry value. |
What I was getting at was that if there is MQGET activity on a queue, the expired messages will be removed before the ExpiryInterval triggers the scavenger process to remove them. _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
bruce2359 |
Posted: Thu Feb 04, 2010 7:12 pm Post subject: |
|
|
 Poobah
Joined: 05 Jan 2008 Posts: 9469 Location: US: west coast, almost. Otherwise, enroute.
|
I knew that's what you meant... _________________ 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 |
|
 |
hdilsky1 |
Posted: Fri Feb 05, 2010 12:09 pm Post subject: |
|
|
Novice
Joined: 04 Feb 2010 Posts: 10 Location: Dallas,TX
|
Sorry guys, I am confused now. Max depth of the queue is 5000. The queue gets about 500 expired messages per day (the messages that not picked up by program 1). I want to remove all expired messages.
If I set ExpiryInterval in Windows registry to 300 will the messages in the queue older than 300 sec be removed or not? |
|
Back to top |
|
 |
Vitor |
Posted: Fri Feb 05, 2010 12:14 pm Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
hdilsky1 wrote: |
If I set ExpiryInterval in Windows registry to 300 will the messages in the queue older than 300 sec be removed or not? |
No. That value controls how often the queue manager checks for expired messages.
To prevent further confusion, see the point 3) I made in my original post and confirm that these expired messages to which you refer are messages whose expiry time setting has passed. Not that they are "expired" in the sense that they're not going to be picked up by program 1 and need to be removed from the queue.
I'm wondering if what you're actaully asking is "how can I remove these messages which are stuck on this queue and will never be processed because they're making the queue fill up". No setting of the queue manager will do this unless the message has been set up to flag it to the queue manager for removal.
That's what ExpiryInterval is; the frequency at which it checks for these messages when no application is reading the queue.
If these messages are correctly set up already, and are expired in the WMQ sense then you should raise a PMR if they're not being removed because the queue manager is at fault. _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
mqjeff |
Posted: Fri Feb 05, 2010 12:27 pm Post subject: |
|
|
Grand Master
Joined: 25 Jun 2008 Posts: 17447
|
To be more clear.
If you can SEE these messages as messages, and not as anything other than QDEPTH, then these messages HAVE NOT expired - either because the Expiry set on them has not elapsed or because NO EXPIRY was set.
The latter is much much more likely. |
|
Back to top |
|
 |
bruce2359 |
Posted: Fri Feb 05, 2010 12:40 pm Post subject: |
|
|
 Poobah
Joined: 05 Jan 2008 Posts: 9469 Location: US: west coast, almost. Otherwise, enroute.
|
No. Messages expire when the time-in-queue reaches zero. Max time in queue is set by the application in the MQMDs expiry field - in 10ths of seconds - on a message by message basis.
No queue setting changes this. Once expired, the qmgr will not deliver ax expired message to an application. From time-to-time (platform-dependent), a task will be launched to remove expired messages from the queue. _________________ 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.
Last edited by bruce2359 on Fri Feb 05, 2010 12:57 pm; edited 1 time in total |
|
Back to top |
|
 |
|