【发布时间】:2021-02-10 18:18:54
【问题描述】:
我有 IBM MQ XMS 的发送方和接收方控制台应用程序。发送方填充队列,接收方使用接收方法使队列管理器出列。我正在使用带有 bool 值的 while 循环来继续运行接收器,以便每当队列接收器中有新消息可用时都可以获取该数据。 现在我想将接收器代码更改为异步消息侦听器而不是 consumer.Receive()。 代码sn-p是,
consumerAsync = sessionWMQ.CreateConsumer(destination);
messageListener = new MessageListener(OnMessageCallBack);
consumerAsync.MessageListener = messageListener;
connectionWMQ.Start();
While(true)
{
console.writeline("Wait for message");
}
上面的代码只获取已经可用的数据,而不是新的。例如,如果我在启动接收器应用程序时队列中有 2 个数据,则这些消息将被下载。但是当我保持接收器应用程序运行并从发送器应用程序发送新数据时,它没有被下载,我必须重新启动接收器应用程序才能获取该数据。类似的情况适用于 同步模式 consumer.ReceiveNoWait().
我错过了什么?
【问题讨论】:
-
这不可能。您是否尝试过运行产品随附的 SimpleAsyncConsumer 示例或 SampleConsumerCS 示例?
-
我也尝试了 SimpleAsyncConsumer 示例和其他在线提供的示例代码,但得到了相同的结果。
标签: asynchronous ibm-mq xms message-listener