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

时间:2016-05-17 02:38:50

标签: nservicebus

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

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

如果省略MessageForwardingInCaseOfFaultConfig设置,NSB将抛出异常。

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

也许我也可以将TimeToBeReceived设置为比SecondLevel Retries更短,但这似乎也不合适。

我正在使用带有SQL Server传输2.2.3的NSB 5.2.14版。

1 个答案:

答案 0 :(得分:3)

这将丢弃所有消息

BusConfiguration configuration = new BusConfiguration();
configuration.DiscardFailedMessagesInsteadOfSendingToErrorQueue();

不幸的是,您仍然需要指定错误队列,否则将无法创建端点实例。但我刚测试它,甚至没有创建错误队列。不幸的是,事件也没有发生。

选项2:IManageMessageFailures JOIN。 NServiceBus repo中有测试,但我们不支持这种情况。

选项3:实施行为Take a look。我没有对此进行测试并认为它有点不稳定,但在将消息发送到错误队列并as described here时捕获消息。

<强>然而

请注意,我们付出了很多努力来确保邮件的传递,甚至是错误队列。因此,请确保您要构建自己的解决方案并覆盖错误队列。我高度建议自己阅读错误队列,处理消息并随意执行任何操作。您可以使用NServiceBus创建另一个端点,该端点从错误队列中提供。这就是我们使用ServiceControl做的事情。

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