2016-12-05 86 views
0

在NServiceBus中有一种方法可以在避免重试的处理程序中引发异常(或者做其他事情),并自动将消息路由到错误队列?如何抛出一个异常,强制消息到NServiceBus中的错误队列

正在处理的消息形成正确,但具有无效值(如空字符串)时的用例。在这种情况下,重试永远不会改变消息的内容,因此重试毫无意义。

感谢

马特

+0

我个人认为这是对NServiceBus错误处理程序的误用。您应该自己处理错误,并根据需要将其记录到自己的审计跟踪中。如果你想让佐贺结束(听起来像你这样做),那么也应该标记为完整。 – Archer

回答

2

您可能要检查出的API创建custom recoverability policy其具体包括NServiceBus 6.0或更早版本中,更通用recoverability文章,你可以改变你的具体版本的NServiceBus。 (在NServiceBus 6.0之前,配置并不是那么容易)。

但是,我会问这些消息是如何在一个完全无效的状态中进入的。验证和恢复在技术上是独立的问题。验证逻辑可以与消息程序集类似,并在发送方和接收方运行。然后,当错误队列中出现消息时,正确的操作是更新验证逻辑以预测不可预见的情况。

我认为这可能是不值得建立任何机制来防止重试发生。更好地构建验证以从源头上解决问题。一段时间后,一条不好的消息就会溜走,但它可能不是世界的尽头,所以只要让重试发生即可。

+0

我同意的前提是,消息*不应该达到那里,但我不想在开发处理程序时作出假设。在一个拥有多个团队的复杂系统中,我无法保证消息能够正确提升。它不是世界的尽头,因为FLR和SLR会失败,但它不适合做正确的事情。也许定制的可恢复性策略就是答案 - 我只是希望有一个更简单的解决方案。 –

+0

最简单的解决方案是让它们失败。定制可恢复性以节省几次重试可能是YAGNI。 –

相关问题