如何使用java读取MQ消息而不从队列中删除消息

时间:2017-07-27 08:20:14

标签: java ibm-mq

当我执行下面的代码时,它将从控制台上的MQ读取数据,然后从队列中删除所有数据。从MQ读取时,我不希望从队列中删除我的数据。我想让它参数化,并且还想将数据写入excel。任何人都可以帮助我解决这个问题。以下是我正在使用的代码。

typedef double (*array2)[2];

extern "C" {
    void simulation(array2* array);
}

int main()
{
    array2 array;
    simulation(&array);
    cout << (*array)[0] << endl;
    cout << (*array)[1] << endl;

    return 0;
}

2 个答案:

答案 0 :(得分:3)

  

以下是我正在使用的代码。

:)您下载了我的MQRead程序。如果您不希望它执行破坏性MQGET,那么您需要更新代码以进行浏览(请参阅JoshMc的评论)。为什么你没有下载我的MQBrowse程序?最后,请开始阅读MQ Knowledge Center,因为它包含很多&amp;初学者到IBM MQ的大量信息。

更新:您不应该使用MQEnvironment类,因为它不是线程安全的。将连接信息放在Hashtable中。请看这里的例子: Java program to connect WMQ with User Id instead of channel

答案 1 :(得分:1)

为了不删除队列中的消息,您需要浏览队列,这可以通过更新openOptions和getOptions来完成,如下所示:

Dim lngRows as long

int openOptions = MQC.MQOO_INQUIRE + MQC.MQOO_FAIL_IF_QUIESCING +  MQC.MQOO_BROWSE;

在Capitalware的网站上查看这个适用于Java应用程序的IBM MQ类的绝佳列表:Sample IBM MQ Java Code