Uploaded image for project: 'ActiveMQ Classic'
  1. ActiveMQ Classic
  2. AMQ-2577

Acknowleging a single message actually acknowleges all messages consumed.

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Not A Problem
    • 5.3.0
    • 5.3.0
    • JMS client
    • None
    • Mac OSX 10.6, CentOS 5 Linux

    Description

      If I publish a bunch of messages, and then consume them with a session Session.CLIENT_ACKNOWLEDGE, when I acknowlege the first messages, all messages actually get acknowledged. I'm including some source code that shows the problem.

      This problem can be seen regardless of the Session be transacted or not.

      Thanks,
      Brad

      package bugs;

      import javax.jms.*;
      import java.util.LinkedList;
      import java.net.*;
      import org.apache.activemq.*;

      /**
      *

      • @author bwillard
        */
        public class MessageAcknowledgementBug {

      public static void main(String[] args) {

      try {

      ConnectionFactory factory = new ActiveMQConnectionFactory(URI.create("tcp://localhost:61616"));

      Connection jmsConn = factory.createConnection();
      jmsConn.start();

      Session session = jmsConn.createSession(false, Session.CLIENT_ACKNOWLEDGE);

      Queue queue = session.createQueue("Ack.Bug.Test");

      MessageProducer publisher = session.createProducer(queue);
      TextMessage msg;

      /*

      • Put 50 Messages on Queue
        */
        for (int a = 0; a < 50; a++) { msg = session.createTextMessage("" + a); publisher.send(msg); }

      MessageConsumer reader = session.createConsumer(queue);

      LinkedList<TextMessage> messages = new LinkedList<TextMessage>();

      /*

      • Receive all 50 messages and store in list
        */

      while ((msg = (TextMessage) reader.receiveNoWait()) != null)

      { messages.add(msg); }

      /*

      • acknowledge one message, which acknowledges them all as received
      • instead of just the one message
        */

      messages.getFirst().acknowledge();

      reader.close();
      publisher.close();

      jmsConn.stop();
      jmsConn.close();

      } catch (Exception exc)

      { exc.printStackTrace(); }

      }
      }

      Attachments

        Activity

          People

            Unassigned Unassigned
            odysseyfx Brad Willard
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: