Hi,

JBoss Messaging version 1.4.x

We have a JMS Topic where we post messages with TTL of (say) 2 weeks.

Our clients create durable subscriptions to the topic.

After creating the durable subscription, the client may return to consume the 
messages later (may be daily, weekly, monthly, etc).

Since the clients are not always online, message consumption is by 
TopicSubscriber.receive() function (NOT by message listeners)

The issue we encounter is when a subscription has many expired (TTL'ed) 
messages.

JBoss Messaging only gets rid of expired messages "on-the-fly" when the 
TopicSubscriber.receive() is called. It can take non-trival minutes to get to 
the first non-expired message if the subscription contains many expired 
messages.

We currently uses TopicSubscriber.receive(5000), which means if JBoss Messaging 
cannot get to the 1st non-expired message within 5 seconds, it returns null (no 
message).

To "worsen" the problem, message consumption is via a RPC-style facade function 
and will most likely timed out.

Is there anyway to configure JBoss Messaging to delete expired message actively 
via perhaps some kind of cron job?

Or any other suggestions?

Thank you.


p.s. The topic is deployed in a cluster.  We have thought of using a nightly 
cron job to receive() using CLIENT_ACKNOWLEDGE and rollback to get rid of the 
expired messages... but we cannot find a way to reliably get to the specific 
connection managers of each node within the cluster.  (i.e. we may get the 
connection manager of cluster A even though we point the jndi url to cluster B.)

View the original post : 
http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4262200#4262200

Reply to the post : 
http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4262200
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to