How to get all enqueued messages in ActiveMQ?

activemq-classic, java

Solution

I suggest reading this tutorial (as does Apache ActiveMQ) SUN Jms tutorial

There are many ways to write JMS/ActiveMQ programs, using various frameworks such as Spring, or by using plain java.

Essentially, write a listener class like this:

public class MyListener implements MessageListener{
   public void onMessage(Message message){
      // Read and handle message here.
   }
}

Since you already are producing message, I assume you have connection up and running.

session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
consumer = session.createConsumer("MyQueue");
listener = new MyListener ();
consumer.setMessageListener(listener);
connection.start(); 
// At this point, messages should arrive from the queue to your listener.

Then there are some error handling code not included in this example, but you should be able to figure it out with the help of the tutorial and JMS documentation.

Problem

I want to build a simple consumer program (in java) to get all messages stocked in an ActiveMQ subject. I have a producer which send TextMessage in the queue. But I don't know how to start to write my consumer for retrieving old messages and wait for new one. If you have an example, thanks! This is my Producer: http://pastebin.com/uRy9D8mY This is my Consumer: http://pastebin.com/bZh4r66e When I run my producer before my consumer, then run the consumer, I got nothing. When I run my consumer then my producer, I add 72 messages in the queue but my consumer got only 24 message...

Original source