I have tried this on 4.1.1 and I'm getting the same results as Suchitha. I dumped the timestamp and expiration header fields on receipt and they appear to be set properly. The expiration is equal to timestamp+timetolive_value
The JMS specification states the following: "Clients should not receive messages that have expired; however, JMS does not guarantee that this will not happen." I hate double-negatives :( So I guess it is up to the client to rely on getJMSTimestamp() and getJMSExpiration to do the math and determine whether to discard the message? Joe rajdavies wrote: > > Can I suggest you use the 4.1.1 release ? http://activemq.apache.org/ > activemq-411-release.html > > cheers, > > Rob > > On Jul 18, 2007, at 3:10 AM, Suchitha Koneru ((sukoneru)) wrote: > >> Hello Active MQ users , >> The active mq version which we use is >> 4.0.2. Our application uses durable subscriber and topic >> publishers. The >> time to live on the topic publishers is set as 5 minutes which 300,000 >> seconds. >> Two durable subscribers a and b are created and started 10 minutes >> after the messages are published. Both the subscribers receive all the >> messages. The messages should expire after 5 minutes , how come >> they are >> still getting delivered ?? Please let me know, if Iam missing >> anything >> in teh configuration. The broker is started at command line from >> active >> me's bin directory. >> >> thanks, >> suchitha. >> >> The code for publisher is as follows >> InitialContext envContext = new InitialContext(prop); >> >> connectionFactory = new >> ActiveMQConnectionFactory("tcp://171.69.155.137:61616"); >> >> connection = (TopicConnection )connectionFactory.createConnection(); >> >> session = ( TopicSession) connection.createSession(false, >> Session.AUTO_ACKNOWLEDGE); >> >> topic = (Topic) envContext.lookup("MyTopic") ; >> >> producer = (TopicPublisher)session.createPublisher(topic); >> >> if(producer != null){ >> >> producer.setTimeToLive(300000); // time to live 5 minutes >> >> producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT); >> >> connection.start(); >> >> } >> >> int i=0 ; >> >> while(i<10){ >> >> System.out.println("sending message"); >> >> ObjectMessage objMsg = session.createObjectMessage(i+""); >> >> System.out.println("publishing the message"); >> >> i++; >> >> producer.publish(objMsg); >> >> } >> >> >> code for receiver >> >> InitialContext envContext = new InitialContext(prop); >> >> connectionFactory = new >> ActiveMQConnectionFactory("tcp://171.69.155.137:61616"); >> >> connection = (TopicConnection )connectionFactory.createConnection(); >> >> connection.setClientID(clientID); >> >> session = ( TopicSession) connection.createSession(false, >> Session.AUTO_ACKNOWLEDGE); >> >> topic = (Topic) envContext.lookup("MyTopic") ; >> >> durableSubscriber = session.createDurableSubscriber(topic, >> durableSubscriptionName); >> >> durableSubscriber.setMessageListener(this); >> >> if(durableSubscriber != null){ >> >> connection.start(); >> >> System.out.println("receiver started"); >> >> } >> >> public void onMessage(Message message){ >> >> >> >> if(message instanceof ObjectMessage) { >> >> ObjectMessage objMessage = (ObjectMessage) message; >> >> System.out.println(this.durableSubscriptionName+" >> "+objMessage.getObject().toString() ); >> >> } >> >> } >> >> > > > -- View this message in context: http://www.nabble.com/messages-are-received--after-expiry-time-tf4100648s2354.html#a11670636 Sent from the ActiveMQ - User mailing list archive at Nabble.com.