2012-01-30 78 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即可。最簡單的方法是使用一個線程和瀏覽光標。