【问题标题】:OpenMQ and JMX - Is it possible to query for messages?OpenMQ 和 JMX - 是否可以查询消息?
【发布时间】:2010-12-14 17:54:09
【问题描述】:

我可以通过使用 JMX 调用 GET_DESTINATIONS 操作来查询队列。这样,我将收到队列信息(属性)。 我现在想查询存储在这个队列中的消息,可以吗?有人能给我一些指导吗?

我已经尝试过使用此代码

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 操作,但我找不到任何可以帮助我的东西。

您能否给我一些提示,我可以寻找什么?

谢谢你, 奥斯卡

编辑:只是为了让您知道:我不想消耗队列,我想要与浏览器类似的行为,我可以在不从队列中删除消息的情况下读取消息。

【问题讨论】:

    标签: java glassfish jmx openmq


    【解决方案1】:
    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();
    

    此代码将为您提供消息,然后只需遍历它,您就可以获得有关消息及其内容的信息

    【讨论】:

      猜你喜欢
      • 2019-05-12
      • 1970-01-01
      • 2018-09-12
      • 2014-01-07
      • 2015-06-12
      • 1970-01-01
      • 2017-09-17
      • 1970-01-01
      • 2021-12-03
      相关资源
      最近更新 更多