book
Article ID: KB0086687
calendar_today
Updated On:
Description
Resolution:
The message expiration logic in the server has changed from release to release. It definitively changed from 3.1.2 to 4.1.0 and above.
So to answer the question, what we have observed with the 3.1.2 server is totally expected. Messages that have a ttl are added to
an expiration list. This list is parsed from time to time to see if messages need to be expired (messages are added to this list ordered
by expiration time). However, this processing stops as soon as the server requires locking to process incoming messages for instance.
So yes, it is possible that if inbound message rate is quite high, the list of messages to expire grows quite large (delaying the expiration of
messages). What is guaranteed, though, is that expired messages are never given to the application, regardless if this message is still
present in the server although, based on its ttl, it is expired. After 4.1.0, that logic completely changed.
So just setting the TTL won't help to get rid of the server when publisher publishes the message at the high rate. The only solution
is to make the publisher to publish the message slowly.
Issue/Introduction
Why expired messages is getting occumulated in EMS 3.1.2 version?