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

标签 asynchronous ibm-mq xms message-listener

我有用于 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()。

我错过了什么?

最佳答案

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

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

关于asynchronous - IBM MQ XMS 消息监听器仅获取队列中已有的消息而不是新消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64571907/

相关文章:

c# - MQ 错误原因 : 2058 randomly starts occurring in C# . NET 客户端在正常工作多天后

javascript - 在内部 forEach 循环中集成异步 mongo 调用

java - ThreadPoolExecutor 中的核心池大小与最大池大小

Javascript MVC 应用程序 - 使用回调编码 "while"条件

c++ - IBM MQ 回调函数调用等待某些作业完成

c# - 使用 XMS .NET API 对抗具有安全导出的安全通道

C# 5 async/await 线程机制感觉不对?

java - 自定义 IBM MQ 的自动重新连接设置

linux - Spring CachingConnectionFactory 在 Linux 主机上的 Tomcat 关闭期间不关闭共享的 MQQueueConnection

c# - XMS.NET无限期地卡在factory.CreateConnection ("username",null);