On Feb 11, 2008, at 10:30 PM, wha wrote:


Hi,

I'm using the following version apache- activemq-5.1-20080208.142256-20.zip

I have like 500 messages pending in the broker and I have the following
consumer:

        public void run()
        {
                //Create a connection
                Connection conn = null;
                
                String user = null;
                String passw = null;
                String brokerurl = "tcp://localhost:61616";
                
                try
                {
                        ActiveMQConnectionFactory connFactory = new
ActiveMQConnectionFactory(user,passw,brokerurl);
                        conn = connFactory.createConnection();
                        conn.start();
                        
Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
                        
                        Queue dest = session.createQueue("Q1");
                        
                        MessageConsumer msgConsumer = 
session.createConsumer(dest);
                        
                        msgConsumer.setMessageListener(this);
                        
                        System.out.println("Listening Q1...");
                        
                }
                catch (JMSException jmse)
                {
                        System.out.println(jmse);
                }
        }
        
        public void onMessage(Message mess)
        {       
                try
                {
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                        java.util.Date date = new java.util.Date();
                        
                        System.out.println(dateFormat.format(date) + " - Received 
msg: " +
((TextMessage)mess).getText());
                        mess.acknowledge();
                        
                        Thread.sleep(5 * 1000);
                        
                }
                catch(InterruptedException ie)
                {
                        System.out.println(ie);
                }
                catch (JMSException jmse)
                {
                        System.out.println(jmse);
                }
                        
        }

When I stop the consumer and then restart it. The last message that was received is being resent again by the broker. Is that normal behavior or is
there something wrong with my code??

Could it be my Thread.sleep that is executed too fast before an
aknowledgement can be sent ?

Any help appreciated!

Thanks!

--
View this message in context: 
http://www.nabble.com/Start-Stop-Consumer-and-duplicate-message-is-received.-tp15422289s2354p15422289.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.


You have auto acknowledgement set on your session - so the message won't actually be acknowledged until you return from onMessage()
Try client acknowledgement  instead




cheers,

Rob

http://open.iona.com/ -Enterprise Open Integration
http://rajdavies.blogspot.com/



Reply via email to