Hi,

I don't think you can remove a message from a queue using a queue browser. You'd generally use a queue receiver for that.

zizou77 wrote:
Hi,

I use a queueBrowser with a selector in my program. So I get some Message.
But when I use message's acknowledge method, messages are still in the
queue. Why?
I use Session.CLIENT_ACKNOWLEDGE, but i've got the same problem with
Session.AUTO_ACKNOWLEDGE.

This a part of my program:

 public void run() {
        ActiveMQConnectionFactory factory = new
ActiveMQConnectionFactory(broker);

        try {
            QueueConnection connexion = factory.createQueueConnection();
            connexion.start();
            QueueSession session = connexion.createQueueSession(false,
Session.CLIENT_ACKNOWLEDGE);
            Queue groupMsgQueueReceiver = session.createQueue(queueIn);
            QueueReceiver queueReceiver =
session.createReceiver(groupMsgQueueReceiver);
            Queue groupMsgQueueSender = session.createQueue(queueOut);
            QueueSender queueSender =
session.createSender(groupMsgQueueSender);
        } catch (JMSException e) {
            e.printStackTrace();
        }
    }

//lookForGroupDocuments is a method started by a job scheduler quartz
 private void lookForGroupDocuments()
    {

      QueueBrowser queueBrowser = session.createBrowser(queue, selector);
      Enumeration enumeration;
      List<Message> messageDocumentsList = new ArrayList();
      enumeration = queueBrowser.getEnumeration();
      while (enumeration.hasMoreElements()) {
            Message message = (Message) enumeration.nextElement();
            messageDocumentsList.add(message);
       }
........

then i do:

for (int i = 0; i < messageDocumentsList.size(); i++) {
       messageDocumentsList.get(i).acknowledge();
}


Reply via email to