You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@activemq.apache.org by "Ericsson Jonas (3) (Consultant)" <jo...@wirelesscar.com> on 2015/09/25 13:05:34 UTC

Expire messages on topics

Hi,

Background:
We have a handful of topics, the messages sent to them will have a TTL on 1s.
To make the test cases run faster we tried to set the expireMessagesPeriod for all topics to 1s.
By this, a message should be expired and put in DLQ after 2 seconds, right?
But the topics are still only cleaned from expired messages every 30s, despite the expireMessagesPeriod="1000".
On top of that, I never see the "expiring messages" in the log for topics as we can see below for queues.

So the messages can be sent and received, but they don't are not cleaned up as fast as expected (takes 30s instead of 1s).

It's pretty confusing, so does anyone know what's going on?

Config:
        <destinationPolicy>
            <policyMap>
                <policyEntries>
                    <policyEntry topic=">" expireMessagesPeriod="1000" >
                        <pendingMessageLimitStrategy>
                            <constantPendingMessageLimitStrategy limit="1000"/>
                        </pendingMessageLimitStrategy>
                    </policyEntry>
                </policyEntries>
            </policyMap>
        </destinationPolicy>

Log:
2015-09-25 11:11:29,573 | DEBUG | Checkpoint done. | org.apache.activemq.store.kahadb.MessageDatabase | ActiveMQ Journal Checkpoint Worker
2015-09-25 11:11:34,578 | DEBUG | Checkpoint started. | org.apache.activemq.store.kahadb.MessageDatabase | ActiveMQ Journal Checkpoint Worker
2015-09-25 11:11:34,581 | DEBUG | Checkpoint done. | org.apache.activemq.store.kahadb.MessageDatabase | ActiveMQ Journal Checkpoint Worker
2015-09-25 11:11:34,691 | DEBUG | queue://xxxxx expiring messages .. | org.apache.activemq.broker.region.Queue | ActiveMQ Broker[localhost] Scheduler
2015-09-25 11:11:34,693 | DEBUG | queue://xxxxx expiring messages done. | org.apache.activemq.broker.region.Queue | ActiveMQ Broker[localhost] Scheduler
2015-09-25 11:11:34,805 | DEBUG | queue://ActiveMQ.DLQ expiring messages .. | org.apache.activemq.broker.region.Queue | ActiveMQ Broker[localhost] Scheduler
2015-09-25 11:11:34,806 | DEBUG | ActiveMQ.DLQ toPageIn: 0, Inflight: 0, pagedInMessages.size 11, pagedInPendingDispatch.size 11, enqueueCount: 0, dequeueCount: 0, memUsage:18909 | org.apache.activemq.broker.region.Queue | ActiveMQ
BrokerService[localhost] Task-2


Software:
ActiveMQ Version: 5.10
JVM Version: 1.7
Application server: spring + Jboss 6


Regards