MQMessage读取或删除

时间:2012-01-30 12:19:33

标签: java ibm-mq

我们有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);
}

1 个答案:

答案 0 :(得分:3)

这实际上是一个相当普遍的要求。方法是浏览查找要删除的邮件的邮件。当您找到它时,请使用破坏性GET将其删除。您可以使用浏览光标GET消息,如信息中心here中所述。您还可以使用从浏览获得的GET使用单独的线程,并使用自己的MsgID队列句柄。只需调用另一个线程并将其传递给MsgID。最简单的方法是使用一个线程和浏览光标。