如何解决带有.NET Core 3.1的IBM MQ XMS-如何获取主题中已存在的消息?
我正在尝试使用.NET Core辅助服务中的WMQ消息。如果启动服务然后将消息发布到队列中,则可以使它工作,但是我的服务将忽略所有已经存在的消息。我读到有关持久订阅者的信息,但这似乎并不是Im所追求的。
当前使用nuget:IBMXMSDotnetClient,9.2.0.1
代码:
var destinationName = _apexConsumerOptions.Destination;
var isTopic = destinationName.StartsWith("topic://");
destinationName = destinationName.Remove(0,8);
_connectionWmq = CreateConnection();
_sessionWmq = _connectionWmq.CreateSession(false,AcknowledgeMode.ClientAcknowledge);
_destination = isTopic ? _sessionWmq.CreateTopic(destinationName) : _sessionWmq.CreateQueue(destinationName);
_consumer = _sessionWmq.CreateConsumer(_destination);
_connectionWmq.Start();
while (!stoppingToken.IsCancellationRequested)
{
// fetch message
var message = _consumer.Receive(_apexConsumerOptions.Timeout);
HandleMessage(message);
await Task.Delay(_apexConsumerOptions.MillisecondsBetweenSyncPolls,stoppingToken);
}
_connectionWmq.Close();
我要订阅主题,而不是排队。
我还遇到了仅在发布第一条消息时激活MessageListener的问题,但这似乎是9.2的已知问题。
解决方法
最终我是一个持久的订户,因此实施此解决了我的问题。
有关持久订阅者的文档@ ibm链接:https://www.ibm.com/support/knowledgecenter/SSFKSJ_9.2.0/com.ibm.mq.dev.doc/xms_csub_dur.htm
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。