OpenMQ и JMX - можно ли запрашивать сообщения? - PullRequest
1 голос
/ 16 ноября 2010

Я могу запрашивать очереди, вызывая операцию GET_DESTINATIONS с использованием JMX. После этого я получу информацию об очереди (атрибуты). Я хотел бы сейчас запросить сообщения, которые хранятся в этой очереди, это возможно? Может ли кто-нибудь дать мне какое-то направление?

Я уже пробовал использовать этот код

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();

Но по какой-то причине O не может получить доступ к той же очереди, что и JMX. Я не исследовал это, потому что хочу использовать JMX в качестве стандарта доступа.

Я все еще пытаюсь найти любую операцию JMX, которая могла бы мне помочь, но я не нахожу ничего, что могло бы мне помочь.

Не могли бы вы дать мне несколько советов, что я могу искать?

спасибо, Оскар

Редактировать: просто, чтобы вы знали: я не хочу использовать очереди, я хочу поведение, подобное браузеру, в котором я могу читать сообщения без удаления их из очереди.

1 Ответ

0 голосов
/ 14 декабря 2010
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();

Этот код даст вам сообщения, затем просто переберите их, и вы сможете получить информацию о сообщении и его содержании

...