IBMMQDotnetClient信函队列



我在net6的IBM MQ中实现死信队列时有一个问题。我正在使用nuGet中的IBMMQDotnetClient库。问题是,当我们面对任何未成功提交的消息时,来自队列的消息将在while(true)中继续。我想让消息到死信队列,并继续从队列的下一个消息。我如何在.net6项目中使用死信队列来解决这个问题?

当您使用XMS时,您将获得IBM MQ XMS库对回退阈值和回退的处理。

见https://www.ibm.com/docs/en/ibm-mq/latest?topic=consumers-poison-messages-in-xms

您需要为队列设置BOTHRESHBOQUEUE。这将是一个MQ管理作业。然后,当任何消息的读取尝试超过阈值时,该消息将被重新请求到回退队列。如果由于任何原因导致重新排队失败,则将消息从输入队列中删除,并将其重新排队到死信队列中,或者丢弃。

唯一需要更改的代码是在消息无法处理时发出信号。您需要启用会话的事务。

sessionWMQ = connectionWMQ.CreateSession(true, AcknowledgeMode.SessionTransacted);

提交好的消息

sessionWMQ.Commit();

回滚(并发出读失败信号)坏消息

sessionWMQ.Rollback();

首先,在https://github.com/ibm-messaging/mq-dev-patterns/tree/master/dotnet

有一组没有启用事务的XMS示例。

相关内容

  • 没有找到相关文章

最新更新