如何禁用向NServiceBus的错误队列发送失败消息?

如何禁用向NServiceBus的错误队列发送失败消息?,nservicebus,Nservicebus,有没有办法禁止向NServiceBus的错误队列发送失败消息 对于一个特定的端点,我不想在第二级重试失败后重试消息。相反,我将使用此处提到的MessageSentToErrorQueue错误通知将这些消息挂接到自定义错误处理解决方案中: 如果忽略MessageForwardingCaseofFaultConfig设置,NSB将抛出异常 我可以将它们发送到一个不受监控的错误队列(表),并定期清除它,但如果可能的话,我宁愿不这样做 也许我也可以将接收时间设置为比第二级重试时间短,但这似乎也不合适 我

有没有办法禁止向NServiceBus的错误队列发送失败消息

对于一个特定的端点,我不想在第二级重试失败后重试消息。相反,我将使用此处提到的MessageSentToErrorQueue错误通知将这些消息挂接到自定义错误处理解决方案中:

如果忽略MessageForwardingCaseofFaultConfig设置,NSB将抛出异常

我可以将它们发送到一个不受监控的错误队列(表),并定期清除它,但如果可能的话,我宁愿不这样做

也许我也可以将接收时间设置为比第二级重试时间短,但这似乎也不合适


我正在使用NSB版本5.2.14和SQL server transport 2.2.3。

这将丢弃所有消息

BusConfiguration configuration = new BusConfiguration();
configuration.DiscardFailedMessagesInsteadOfSendingToErrorQueue();
不幸的是,您仍然需要指定错误队列,否则将无法创建端点实例。但我只是测试了它,甚至没有创建错误队列。不幸的是,事件也没有触发

选项2:at
IManageMessageFailures
。NServiceBus repo中有测试,但我们不支持这种场景

选项3:实现一个行为。我还没有测试过它,我认为它有点不稳定,但是当消息被发送到错误队列并返回时,会捕获消息

但是

请注意,我们投入了大量精力来确保消息被传递,甚至传递到错误队列。因此,一定要构建自己的解决方案并覆盖错误队列。我强烈建议自己阅读错误队列,处理消息并对其执行任何操作。您可以使用NServiceBus创建另一个端点,该端点从错误队列中获取信息。这就是我们对ServiceControl所做的


注意:如果您使用ServiceControl和/或错误队列进行常规处理,则应为此终结点指定不同的错误队列,以便来自此终结点的错误消息不会与常规错误消息处理混合使用。

Hmmm,我刚得到一个灵感,
MessageSentToErrorQueue
可能不会因为设置而被触发,事实上也不会。它会多次触发
messagehasfailedafirstlevelretrytry
,但这可能不会有帮助。您确定不能将所有失败的消息发送到错误队列并从那里处理它们吗?我想我可以发送到单独的错误队列(我们对其他端点使用ServiceControl)并进行处理。因此,我需要设置一个额外的端点,并将当前端点的错误队列指向新错误处理端点的输入队列?是的,请查看ServiceControl以了解我们是如何做到这一点的,也许它会有所帮助。注意:
DiscardFailedMessages代替SendingToErrorQueue
在NSB 6中已过时:。您现在必须创建一个新的错误行为: