MQ类从队列中浏览

MQ类从队列中浏览

本文介绍了使用IBM MQ类从队列中浏览,读取和删除消息的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I'm writing a simple Java application using MQ classes for Java with Eclipse.

现在我能够浏览远程队列而不删除存储的消息。$
以下是阅读周期的代码:

Right now I'm able to browse a remote queue without removing the messages stored.
Here is the code of the reading cycle:

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

主要问题:
在读取消息行之后和将光标移动到下一条消息之前,如何从队列中删除消息?

Main question:After the read message line and before moving the cursor to the next message how can I remove the message from the queue?

次要问题:
Eclispe警告我,所有用于选项的costants都已弃用;哪些是正确的?

Secondary question:Eclispe is warning me that all the costants used for the options are deprecated; which are the correct ones to use?

解决方案:

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

Here the solution I'm really looking for:

// set te cursor to remove the message from the queue
gmo.options = CMQC.MQGMO_MSG_UNDER_CURSOR;
queue.get(theMessage, gmo);

这些行必须插入问题代码

these lines have to be inserted in the question code

我在这里找到了它:

推荐答案

解决方案:

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

Here the solution I'm really looking for:

// set te cursor to remove the message from the queue
gmo.options = CMQC.MQGMO_MSG_UNDER_CURSOR;
queue.get(theMessage, gmo);

这些行必须插入问题代码

these lines have to be inserted in the question code

我在这里找到了它:

这篇关于使用IBM MQ类从队列中浏览,读取和删除消息的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-07 08:42