Do you want to post your example that's *not* working? I last used retroactive consumers probably 18 months ago, and they worked fine at that time. I was doing a network of brokers with fail-over, and if I took one broker down and caused a consumer to fail over, it missed messages during the fail-over operation. With retroactive consumer enabled, it didn't miss any messages (but got some duplicates) once it failed over. I don't have that code/configuration at hand, though -- just this from my notes:
topic = new ActiveMQTopic("com.example.MyTopic?consumer.retroactive=true"); And I used this to set the retroactive consumers to receive the last 30s worth of messages, instead of the default (which I think at the time was last 100): <broker> <destinationPolicy> <policyMap> <defaultEntry> <policyEntry topic="*"> <subscriptionRecoveryPolicy> <timedSubscriptionRecoveryPolicy recoverDuration="30000" /> </subscriptionRecoveryPolicy> </policyEntry> </defaultEntry> </policyMap> </destinationPolicy> </broker> http://www.activemq.org/site/retroactive-consumer.html http://www.activemq.org/site/subscription-recovery-policy.html Thanks, Aaron On Tue, Mar 18, 2008 at 10:20 AM, Andrew M <[EMAIL PROTECTED]> wrote: > Does anyone have an example of how to make a retroactive consumer work? > Thanks, > Andrew > > > -----Original Message----- > From: Andrew M [mailto:[EMAIL PROTECTED] > Sent: Friday, March 07, 2008 5:05 PM > To: users@activemq.apache.org > Subject: RE: Retroactive consumer not working... > > Does anyone have an example of working retroactive consumer code? > > Thanks, > Andrew > > > > > -----Original Message----- > From: Andrew [mailto:[EMAIL PROTECTED] > Sent: Wednesday, March 05, 2008 2:40 PM > To: users@activemq.apache.org > Subject: Retroactive consumer not working... > > My broker is not feeding my consumer the messages from the retroactive queue > when the consumer connects. The producer puts in a 10 min (600000ms) TTL so > I would think when my consumer reconnects it should receive the last 10 mins > of msgs. Otherwise things appear fine, new msgs are received, etc... any > ideas? > > > On the producer....... > > private Session getActiveMqSession() throws JMSException { > String url = "failover:(tcp://" + ACTIVE_MQ_SERVER + ":" + > ACTIVE_MQ_PORT + > "?wireFormat.maxInactivityDuration=0)?maxReconnectAttempts=0"; > ActiveMQConnectionFactory connectionFactory = new > ActiveMQConnectionFactory(url); > connection = connectionFactory.createConnection(); > ((ActiveMQConnection)connection).setUseAsyncSend(false); > connection.start(); > return connection.createSession(false, Session.SESSION_TRANSACTED); > } > > Session session = getActiveMqSession(); > > void send(Object a) throws blah blah blah { > Destination destination = session.createQueue(consumerName); > producer = session.createProducer(destination); > ObjectMessage m = session.createObjectMessage(); > m.setObject(a); > //10 min TTL > ((ActiveMQMessageProducer)producer).send(m, DeliveryMode.PERSISTENT, > Message.DEFAULT_PRIORITY, 600000L); > } > > > ...and on the Consumer... > > Session session; > > public void run() { > String url = > "failover:(tcp://tupolev:61616?wireFormat.maxInactivityDuration=0)?maxReconn > ectAttempts=0"; > ActiveMQConnectionFactory connectionFactory = new > ActiveMQConnectionFactory(url); > Connection connection = connectionFactory.createConnection(); > connection.start(); > connection.setExceptionListener(this); > session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); > } > > public void subscribe(String destName, MessageListener l) throws > JMSException { > destName = destName + "?consumer.retroactive=true"; > MessageConsumer mc = > session.createConsumer(session.createQueue(destName)); > mc.setMessageListener(l); > } > > > > > > > > -----Original Message----- > From: Andrew [mailto:[EMAIL PROTECTED] > Sent: Wednesday, March 05, 2008 9:49 AM > To: users@activemq.apache.org > Subject: RE: purging an ActiveMQ queue > > Thanks I'll create it as retroactive. Problem is, how can I tell the broker > to purge the msgs at midnight so I get only msgs from the current day? > Would I just schedule a messageConsumer.close() ? > > Thanks, > Andrew > > > -----Original Message----- > From: James Strachan [mailto:[EMAIL PROTECTED] > Sent: Wednesday, March 05, 2008 12:17 AM > To: users@activemq.apache.org > Subject: Re: purging an ActiveMQ queue > > On 04/03/2008, Andrew <[EMAIL PROTECTED]> wrote: > > I would like to set up a topic or queue so that when a client connects to > > the broker and subscribes to that topic he receives a refresh of all the > > messages sent so far on that topic that day. At midnight the broker > should > > purge the day's messages. What's the best way to do that? > > For queues, messages stay on a queue until they expire. For topics, > normally you only get messages sent after you start subscribing > (unless you use persistent topic subscriptions) though ActiveMQ > supports Subscription Recovery for this kinda stuff... > > http://activemq.apache.org/subscription-recovery-policy.html > > -- > James > ------- > http://macstrac.blogspot.com/ > > Open Source Integration > http://open.iona.com > > > > > >