2012-01-30 74 views
1

我们拥有WebSphere MQ服务器。 我已经编写了Java客户端实用程序,它可以读取所有消息(将它们留在队列中)或从队列中删除所有消息。 但是,有可能读取消息,如果它包含某些字符串 - 删除它?MQMessage读取或删除

读书,我使用队列消息(消息会留在服务器队列以备将来处理,怎么实用程序仅用于测试):

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

回答

3

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