java - OpenMQ 和 JMX - 是否可以查询消息?

标签 java glassfish jmx openmq

我可以通过使用 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 操作,但我没有找到任何可以帮助我的东西。

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

谢谢你, 奥斯卡

编辑:只是为了让您知道:我不想使用队列,我想要与浏览器类似的行为,在浏览器中我可以读取消息而不将它们从队列中删除。

最佳答案

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

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

关于java - OpenMQ 和 JMX - 是否可以查询消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4193084/

相关文章:

java - 重定向后重做原始请求 getRequestDispatcher

java - 如何通过 URL 检索 YouTube 视频的标题

java - mac上eclipse无法运行java程序

groovy - 使用 JMX 的 Logback Groovy 配置?

java - 将好友列表实现到数据库中的最佳方法? MySQL

java - 如何使用 EJB 3.1 在我的测试中注入(inject) PesistenceContext?

java - RestTemplate显示找不到页面但没有错误异常

java - 如何在 pom.xml 中处理 Web 服务器的不同依赖项要求

java - MemoryPoolMXBean.getUsage() 相对于 Runtime.freeMemory() 的优势

java - 如何创建一个简单的 JMX 客户端?