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

Aru*_*STS 2 asynchronous message-listener xms ibm-mq

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

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

connectionWMQ.Start();
While(true)
{
    console.writeline("Wait for message");
}
Run Code Online (Sandbox Code Playgroud)

上面的代码只获取已经可用的数据,而不是新的数据。例如,如果我在启动接收器应用程序时队列中有 2 个数据,那么这些消息就会被下载。但是,当我保持接收器应用程序运行并从发送器应用程序发送新数据时,它不会被下载,我必须重新启动接收器应用程序才能获取该数据。类似的场景在同步模式consumer.ReceiveNoWait() 中运行良好。

我缺少什么?

kas*_*idu 5

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

更新:收到基于版本 9.2.0.1 IT34722构建的修复程序。测试没问题。应与修复包 9.2.0.4 一起发布。

  • APAR [IT34722](https://www.ibm.com/support/pages/apar/IT34722) 今天关闭,并在 9.2.0.4 和 9.2.5 中显示已修复。 (2认同)