On 10/23/06, Dave cawthorn <[EMAIL PROTECTED]> wrote:
HI, Do non persistent messages with a TTL ever get removed out of the brokers message store?
Non persistent messages shouldn't be getting written to the message store? Or do you mean the RAM buffer?
I wrote a test that sends a non persistent message with a TTL of 1ms and then tries to consume this message. What I have noticed is that every time I run this test the broker tries to redeliver the previously expired message as well as the newly expired message but the ActiveMQMessageConsumer rejects it and outputs multiple "Received expired message:" debug log record. I waited for an hour to see if the thread that deletes messages out of the persistent store cleaned up these messages as well but it doesn't seem to. I'm using jms for heartbeating clients and I want to use the TTL functionality to remove stale heartbeat requests but if the they are going to cause a memory leak in the broker i won't be able to do this.
It could be we need to me more aggressive in evicting timed out messages from RAM. We may wanna add some background thread to chase down expired messages and remove them eagerly -- James ------- http://radio.weblogs.com/0112098/
