javaglassfishjmxopenmq

OpenMQ and JMX - Is it possible to query for messages?


I am able to query for queues by invoking a GET_DESTINATIONS operation using JMX. With that I will receive the queue info (attributes). I would like now to query the messages that are stored in this queue, is that possible? Could someone give me some direction?

I have already tried using this code

ConnectionFactory connectionFactory = new
   com.sun.messaging.QueueConnectionFactory();


  Connection connection = connectionFactory.createConnection();
  Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

  Queue myQueue = session.createQueue(string);

  QueueBrowser browser = session.createBrowser(myQueue);
  Enumeration msgs = browser.getEnumeration();

  if (!msgs.hasMoreElements()) {
   System.out.println("No messages in queue");
  } else {
   while (msgs.hasMoreElements()) {
    Message tempMsg = (Message) msgs.nextElement();
    System.out.println("Message: " + tempMsg);
   }
  }

  connection.close();

But for some reason O can't access the same queue as using JMX. I didn't made any research on that because I want to use JMX as the access standard.

I am still trying to find any JMX operation that could help me, but I am not finding anything that could help me.

Could you please give me some hints what can I look for?

thank you, Oscar

Edit: just to let you know: I don't want to consume the queues, I want a similar behavior to the Browser, in which I can read the messages without removing them from the queue.


Solution

  • QueueBrowser browser = null;
    
    try{
      Queue myQueue = session.createQueue(getName());
    
      //Create the browser and session to be able to iterate
      browser = session.createBrowser(myQueue);
      Enumeration msgs = browser.getEnumeration();
    

    This code will give you the messages, then just iterate through it and you can get get infos about the message and its content