It is documented for WebSphere MQ (WMQ) that expired messages are removed from a queue when an MQGET call would normally return them. Instead of returning the message, the queue manager discards the message and the MQGET command looks for the next acceptable message.
You notice one or more of the following during a period of no MQGET activity, and want to know why it occurs: current depth (CURDEPTH) of a queue is decreasing, specific messages are "disappearing" off of queues, expired messages are being discarded, although no MQGET command is issued.
Beginning in WMQ V6.0, functionality has been added to internally discard expired messages silently. When a message expires, it will be discarded when: an MQGET which matches the message is issued, or It is internally removed by the queue manager's expirer task.
The internal expirer task runs every 300 seconds (5 minutes), by default. If you wish to alter the frequency of this task, you may use the 'ExpiryInterval' setting. This value is configured in seconds, with a range from 1 to 1,000,000 seconds. If you set the value to '0', you will disable the task.
- On z/OS, 'ExpiryInterval' is a queue manager attribute.
- On distributed platforms, 'ExpiryInterval' can be added to the 'TuningParameters' stanza in the queue manager's qm.ini file.
43308 487 000
52062 499 000
WebSphere MQ WMQ