activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jose Luna <>
Subject Durable subscription with retroactive subscription recovery policy
Date Mon, 27 Apr 2009 15:18:57 GMT


We have a large number (thousands) of durable subscribers that subscribe to a set of topics.
 These consumers will be connecting/disconnecting frequently, and we must ensure that they
receive messages sent while they are disconnected (hence durable subscriptions).  These durable
subscriptions will be created after important messages have been sent, so we must also ensure
that the consumers receive messages retroactively, according to our subscription recovery

Unfortunately, the retroactive consumer behavior + durable subscriptions do not mix well.
  When connecting a durable subscription while using the activemq.retroactive header (we use
STOMP), we receive all retroactive messages every time we connect.  It looks like from JIRA
AMQ-1549 ( that the durable subscriptions
with retroactive behaved as desired in the 4.X release of activemq.  The bug is open and assigned,
with fixed version marked as 5.3 (although no work has been done yet).

However, there's a bit of a conflicting report here:
.  Bruce and James seem to agree that subscription recovery policy is only for non-durable
subscriptions.   So I'm wondering which is accurate:  Is this a bug since in 5.X that just
hasn't been worked on yet? Or is this the desired behavior with no plans to change it? Of
course, my vote is in for the former rather than the latter.  I think it would be desirable
in general (not just my case) for durable subscriptions to play nicely with the subscription
recovery policy.

That said, I'm also wondering if there's any advice for my particular case.   I'd love to
work on a patch, but we are a small team up against a tight deadline and we have no experience
with the Activemq source -- I'm not sure this is something we can tackle right now.  If we
aren't able to get the desired behavior from activemq, each consumer could send the retroactive
header only the very first time they connect.  However, there's no clear way (that I can see)
to tell when all retroactive messages have been received.  So the consumer may make the first
connection retroactive, but how does it know that it successfully received all retroactive
messages and shouldn't use the retroactive header next time?

Thank you for your attention,



View raw message