|
RSS Feed - WebSphere MQ Support
|
RSS Feed - Message Broker Support
|
Expired messages cleaning |
« View previous topic :: View next topic » |
Author |
Message
|
markt |
Posted: Tue Oct 04, 2005 3:50 am Post subject: |
|
|
 Knight
Joined: 14 May 2002 Posts: 508
|
a) it is new function in V6
b) the equivalent of ExpiryInt is not an exposed parameter.
c) the precise behaviour of expiry has NEVER been documented, at least apart from the z/OS ExpiryInt. The only guarantee is exactly the same as it's always been - that you will never be able to GET an expired message. The behaviour has changed several times internally, so any "rules" that people discovered - eg it required a destructive get or a browse, that might vary by platform and by release - were not part of the defined produc externals.
d) a loaded queue is (to a first approximation) a queue where someone has it open or has only recently closed it.
e) if a queue does not get loaded (because noone opens it) then any expired messages on the queue continue to sit on the queue. The queue manager doesn't want to go to the expense of setting up all the memory and the I/O for a queue that noone's actually using.
So even with the new internals you cannot be certain that a message will be preemptively removed when expired. It's just a lot more likely. |
|
Back to top |
|
 |
hopsala |
Posted: Tue Oct 04, 2005 6:08 am Post subject: |
|
|
 Guardian
Joined: 24 Sep 2004 Posts: 960
|
markt wrote: |
d) a loaded queue is (to a first approximation) a queue where someone has it open or has only recently closed it.
e) if a queue does not get loaded (because noone opens it) then any expired messages on the queue continue to sit on the queue. The queue manager doesn't want to go to the expense of setting up all the memory and the I/O for a queue that noone's actually using.
So even with the new internals you cannot be certain that a message will be preemptively removed when expired. It's just a lot more likely. |
However, even though it is undocumented and thus risky (pending changes in other versions - undocumented implicitly means unsupported), all those that had written an "expiry message cleaner" that MQGETs (BROWSE or other methods) from the queue, can now just MQOPEN and immediately close, and that will make sure all expired msgs are taken care of. |
|
Back to top |
|
 |
PeterPotkay |
Posted: Tue Oct 04, 2005 9:57 am Post subject: |
|
|
 Poobah
Joined: 15 May 2001 Posts: 7722
|
And I assume MQOPEN just for MQINQ is enough, as that is all I had open on the queue (using the little WatchQ Support Pac) watching the depth refresh every second. _________________ Peter Potkay
Keep Calm and MQ On |
|
Back to top |
|
 |
Michael Dag |
Posted: Tue Oct 04, 2005 10:52 am Post subject: |
|
|
 Jedi Knight
Joined: 13 Jun 2002 Posts: 2607 Location: The Netherlands (Amsterdam)
|
markt wrote: |
a) it is new function in V6 |
nice
markt wrote: |
b) the equivalent of ExpiryInt is not an exposed parameter. |
not so nice
markt wrote: |
c) the precise behaviour of expiry has NEVER been documented, at least apart from the z/OS ExpiryInt. The only guarantee is exactly the same as it's always been - that you will never be able to GET an expired message. The behaviour has changed several times internally, so any "rules" that people discovered - eg it required a destructive get or a browse, that might vary by platform and by release - were not part of the defined produc externals. |
and it could change again? (good reason for not documenting something...)
markt wrote: |
d) a loaded queue is (to a first approximation) a queue where someone has it open or has only recently closed it. |
BTW does this also apply to the MCA opening the queue???
markt wrote: |
So even with the new internals you cannot be certain that a message will be preemptively removed when expired. It's just a lot more likely. |
true, but then you could "see" the messages before they expired...
nice trick question for the V6 certification test  _________________ Michael
MQSystems Facebook page |
|
Back to top |
|
 |
hopsala |
Posted: Tue Oct 04, 2005 2:21 pm Post subject: |
|
|
 Guardian
Joined: 24 Sep 2004 Posts: 960
|
PeterPotkay wrote: |
And I assume MQOPEN just for MQINQ is enough, as that is all I had open on the queue (using the little WatchQ Support Pac) watching the depth refresh every second. |
Actually any sort of MQOPEN should be sufficient, since once you MQOPEN a queue it is "loaded", I have this excerpt out of the "v5.3 Internal presentation" by the illustrious Paul Clark of IBM (courtesy of wayne):
In the MQOPEN processing chapter, Paul Clark wrote: |
The DAP performs the operations needed to make the physical (local) queue available. This is termed loading the
queue. It involves opening the file containing the underlying message data and allocating the shared memory buffers
and other shared resources necessary for the queue to be used. Of course, if the queue is already loaded, this work
can be avoided |
Granted this is 5.3 behavior, and undocumented behavior at that, but really this is cross-version internal processing, and i'm quite sure it hasn't changed in v6. |
|
Back to top |
|
 |
hopsala |
Posted: Tue Oct 04, 2005 2:23 pm Post subject: |
|
|
 Guardian
Joined: 24 Sep 2004 Posts: 960
|
Michael Dag wrote: |
markt wrote: |
d) a loaded queue is (to a first approximation) a queue where someone has it open or has only recently closed it. |
BTW does this also apply to the MCA opening the queue??? |
Yes. An MCA is an MQ appl like any other, give or take a few mq calls only available for MCA's, MQCONN-MQOPEN-MQGET processing is normal. |
|
Back to top |
|
 |
bruce2359 |
Posted: Thu Nov 09, 2006 9:29 am Post subject: |
|
|
Guest
|
Expiry is documented in substantial detail in the Application Programming Reference (sc34-6596-00), Chapter 12, page 151. |
|
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
|
|
|
|