NServiceBus异常处理和消息重试机制

时间:2010-03-15 12:23:32

标签: c# .net exception-handling nservicebus

我们计划在我们的应用程序中使用NServiceBus来调度消息。 在我们的例子中,每条消息都有timeToLive属性,用于定义应该处理此消息的时间段。

对于第一次尝试中消息处理不成功的情况,我们的计划是将其移动到特定的重试存储(重试队列),然后在成功处理或{{1}时重试消息(重试之间有一些超时)已过期。

如果timeToLive过期,我们计划记录邮件内容并丢弃邮件。

实际上,这种重试行为主要由我们正在实施的协议决定。

有没有办法用NServiceBus实现这样的行为?我看到,不成功的消息转到特定的timeToLive。是否可以创建一个单独的总线,指向错误队列?

1 个答案:

答案 0 :(得分:4)

我建议您有一个单独的进程,根据您描述的逻辑监视错误队列执行重试。看一下nservicebus附带的ReturnToSourceQueue工具,以获得灵感:

http://nservicebus.svn.sourceforge.net/viewvc/nservicebus/trunk/src/tools/management/Errors/ReturnToSourceQueue/NServiceBus.Tools.Management.Errors.ReturnToSourceQueue/Class1.cs?view=markup

我有一篇关于如何处理可能会给你一些想法的失败的博客文章: http://andreasohlund.net/2010/03/15/errorhandling-in-a-message-oriented-world/

希望这有帮助!