2

我有 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 个数据,则这些消息将被下载。但是当我保持接收器应用程序运行并从发送器应用程序发送新数据时,它没有被下载,我必须重新启动接收器应用程序才能获取该数据。类似的场景适用于同步模式 consumer.ReceiveNoWait()。

我错过了什么?

4

2 回答 2

4

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

更新:收到基于版本 9.2.0.1 IT34722的修复。测试正常。应与修订包 9.2.0.4 一起发布。

于 2020-10-28T11:58:36.877 回答
2

很久以前(81 天......)我已经在这个问题上向 ibm 发布了一个支持案例。apar 是 IT34722,但目前仍处于开放状态。

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

于 2021-01-11T14:51:02.687 回答