java - 如何使用 Java 在 IBM MQ 中循环读取消息
问题描述
我编写了 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.print In ("Message lenth" + mgMessage ( ) ) ;
mgMessage.characterSet = 300;
int length = mqMessage.getMessageLength( );
System. out ( of the message" + length) ;
System. out ( of 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 对象并尝试获取已获取的消息。
推荐阅读
- css - 我想删除引导链接中的下划线
- angular - Angular子容器辅助路由器出口routerLink问题
- bash - 从内部陷阱中读取 bash 中断
- javascript - 从 POST 下载为 PDF 响应 - AJAX
- flutter - 具有动态尺寸图像的列表视图
- firebase - Flutter 与 firebase 实时数据库移动和网络
- mysql - 我得到空响应与 http.Response 响应
- openshift - 如何在 openshift 4.5 中自定义 webhook 端口
- environment-variables - 使用别名在包的配置之间切换
- python - ModuleNotFoundError:AWS 中没有名为“应用程序”的模块错误