使用IBM MQ类浏览,阅读和从队列中除去消息

我正在使用Java的MQ类编写一个简单的Java应用程序。

现在,我可以浏览远程队列而无需删除存储的消息。

这是阅读周期的代码:

MQQueueManager QMgr = new MQQueueManager(qManager); //<-- qManager is a String with the QMgr name

int openOptions = MQC.MQOO_FAIL_IF_QUIESCING | MQC.MQOO_INPUT_SHARED | MQC.MQOO_BROWSE;

MQQueue queue = QMgr.accessQueue(queueName, openOptions);

MQMessage theMessage = new MQMessage();

MQGetMessageOptions gmo = new MQGetMessageOptions();

gmo.options=MQC.MQGMO_WAIT | MQC.MQGMO_BROWSE_FIRST;

gmo.matchOptions=MQC.MQMO_NONE;

gmo.waitInterval=5000;

boolean thereAreMessages=true;

while(thereAreMessages){

try{

//read the message

queue.get(theMessage,gmo);

//print the text

String msgText = theMessage.readString(theMessage.getMessageLength());

System.out.println("msg text: "+msgText);

// <--- Solution code Here

//move cursor to the next message

gmo.options = MQC.MQGMO_WAIT | MQC.MQGMO_BROWSE_NEXT;

}catch(MQException e){

if(e.reasonCode == e.MQRC_NO_MSG_AVAILABLE) {

System.out.println("no more message available or retrived");

}

thereAreMessages=false;

} catch (IOException e) {

System.out.println("ERROR: "+e.getMessage());

}

}

在已读消息行之后,将光标移动到下一条消息之前,如何从队列中删除该消息?

Eclispe警告我,不赞成使用所有用于期权的成本;哪些是正确使用的?


这是我真正想要的解决方案:

// set te cursor to remove the message from the queue

gmo.options = CMQC.MQGMO_MSG_UNDER_CURSOR;

queue.get(theMessage, gmo);

这些行必须插入问题代码中

我在这里找到它:http :

//www.velocityreviews.com/forums/t124676-mq-series-messages-browse-and-

delete.html

回答:

这是我真正想要的解决方案:

// set te cursor to remove the message from the queue

gmo.options = CMQC.MQGMO_MSG_UNDER_CURSOR;

queue.get(theMessage, gmo);

这些行必须插入问题代码中

我在这里找到它:http :

//www.velocityreviews.com/forums/t124676-mq-series-messages-browse-and-

delete.html

以上是 使用IBM MQ类浏览,阅读和从队列中除去消息 的全部内容, 来源链接: utcz.com/qa/424479.html

回到顶部