有没有办法禁止将失败的消息发送到NServiceBus的错误队列?
对于一个特定端点,我不想在第二级重试失败后重试消息。相反,我将使用此处提到的MessageSentToErrorQueue错误通知将这些消息挂钩到自定义错误处理解决方案中:Is there a global exception handler for NServiceBus?
如果省略MessageForwardingInCaseOfFaultConfig设置,NSB将抛出异常。
我可以将它们发送到一个不受监控的错误队列(表),并且只是定期清除它,但是如果可能的话我宁愿不这样做。
也许我也可以将TimeToBeReceived设置为比SecondLevel Retries更短,但这似乎也不合适。
我正在使用带有SQL Server传输2.2.3的NSB 5.2.14版。
答案 0 :(得分:3)
这将丢弃所有消息
BusConfiguration configuration = new BusConfiguration();
configuration.DiscardFailedMessagesInsteadOfSendingToErrorQueue();
不幸的是,您仍然需要指定错误队列,否则将无法创建端点实例。但我刚测试它,甚至没有创建错误队列。不幸的是,事件也没有发生。
选项2:IManageMessageFailures
JOIN
。 NServiceBus repo中有测试,但我们不支持这种情况。
选项3:实施行为Take a look。我没有对此进行测试并认为它有点不稳定,但在将消息发送到错误队列并as described here时捕获消息。
<强>然而强>
请注意,我们付出了很多努力来确保邮件的传递,甚至是错误队列。因此,请确保您要构建自己的解决方案并覆盖错误队列。我高度建议自己阅读错误队列,处理消息并随意执行任何操作。您可以使用NServiceBus创建另一个端点,该端点从错误队列中提供。这就是我们使用ServiceControl做的事情。
注意:如果您正在使用ServiceControl和/或错误队列进行常规处理,则应为此端点指定不同的错误队列,以便来自此端点的错误消息不会与您的常规错误消息处理混合。 / p>