IBM MQ XMS消息侦听器仅获取队列中已经可用的消息,而不是新消息

问题描述

我有用于IBM MQ xms的发送方和接收方控制台应用程序。发送者填充队列,接收者使用接收方法使队列管理器出队。我使用带有bool值的while循环来继续运行接收器,以便只要队列中有新消息可用,接收器就可以获取该数据。 现在,我想将接收者代码更改为“异步消息侦听器”,而不是consumer.Receive()。 代码段是

consumerAsync = sessionWMQ.CreateConsumer(destination);                
messageListener = new MessageListener(OnMessageCallBack);
consumerAsync.MessageListener = messageListener;

connectionWMQ.Start();
While(true)
{
    console.writeline("Wait for message");
}

上面的代码获取已经可用的数据,而不获取新的数据。例如,如果我在启动接收器应用程序时队列中有2个数据,则这些消息将被下载。但是,当我保持接收器应用程序运行并从发送器应用程序发送新数据时,它没有下载,我必须重新启动接收器应用程序才能获取该数据。类似的情况也可以正常工作 同步模式使用者。ReceiveNowait()。

我想念什么?

解决方法

XMS版本?版本9.2的错误已由IBM 10.28.2020确认。他们正在修复。还没有APAR。临时解决方案是降级到客户端版本9.1。

,

我很久以前就这个问题向 ibm 发布了一个支持案例(81 天...) 好久没出现这样的bug了。 apar是IT34722,但目前仍处于开放状态。

9.1.3 可能会工作,但有其他问题/错误,不会作为 nuget-package 找到