我们有WebSphere MQ服务器。 我编写了Java客户端实用程序,它可以读取所有消息(将它们留在队列中)或从队列中删除所有消息。 但这是否可以读取消息,如果它包含某些字符串 - 删除它?
要读取我使用的队列消息(消息将保留在服务器队列中以供将来处理,coz实用程序仅用于测试):
MQQueue queue = queueManager.accessQueue(queueName, MQC.MQ00_BROWSE | MQC.MQ00_INPUT_SHARED);
MQGetMessageOptions options = new MQGetMessageOptions();
options.options = MQC.MQ00_BROWSE_FIRST | MQC.MQ00_INPUT_SHARED;
while(true) {
MQMessage msg = new MQMessage();
queue.get(msg, options);
if (msg.getTotalMeesageLength() == 0) {
break;
} else {
readMessage(msg);
}
答案 0 :(得分:3)
这实际上是一个相当普遍的要求。方法是浏览查找要删除的邮件的邮件。当您找到它时,请使用破坏性GET
将其删除。您可以使用浏览光标GET
消息,如信息中心here中所述。您还可以使用从浏览获得的GET
使用单独的线程,并使用自己的MsgID
队列句柄。只需调用另一个线程并将其传递给MsgID
。最简单的方法是使用一个线程和浏览光标。