我可以通过使用 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/