gpt4 book ai didi

java - 如何使用 Java 在 IBM MQ 中循环读取消息

转载 作者:行者123 更新时间:2023-11-29 06:49:08 26 4
gpt4 key购买 nike

我编写了 java 类来从 IBM MQ 队列中读取消息。当我使用 while 循环时,我能够读取队列中的第一条消息,但无法读取第二条消息

public final void ReadMessage (String queueName) throws Exception {
int options = MQC.MQOOINQUIRE + MQC.MQOOFAILIFQUIESCING + MQC.MQOOINPUTSHARED;
System.out.printin ("start Creating the Queue.")
MQQueue myQueue = this.mqManager.accessQueue(queueName, options) ;

MQMessage mgMessage = new MQMessage ( ) ;
MQGetMessageOptions gmo = new MQGetMessageOptions ( ) ;
gmo.options = MQC.MQGMO NO WAIT + MQC.MQGMO FAIL IF QUIESCING;
gmo.matchOptions = MQC.MQMO NONE;
gmo.waitlnterval = 15000;
boolean msgqueue=true;
while(msgqueue){
try {
System.out.println("end of get Message from myqueue");
System.out.println("Message length" + mgMessage());
mgMessage.characterSet = 300;
int length = mqMessage.getMessageLength( );

System.out.println("The message" + length);
System.out.println("The message" + mgMessage.readString(length));
gmo.options = MQC.MQGMOWAIT | MQC.MQGMOBROWSENEXT;

if(mgMessage.getCurrentDepth()==1){
msgqueue=false;
}
}
catch (Exception e) {
msgqueue=false;
}
}
}

我想知道我还需要添加什么才能移动队列中的下一条消息。

谢谢

最佳答案

我会尝试在 while 循环中移动这两行,因为 queue.get() 调用在返回时会更新 MQMessage 对象实例。

   MQMessage mgMessage = new MQMessage ( ) ; 
MQGetMessageOptions gmo = new MQGetMessageOptions ( ) ;

由于为下一次调用传递了相同的 MQMessage 对象,因此 get 调用使用更新的 MQMessage 对象并尝试获取已获取的消息。

关于java - 如何使用 Java 在 IBM MQ 中循环读取消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55412698/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com