我们计划在我们的应用程序中使用NServiceBus来调度消息。
在我们的例子中,每条消息都有timeToLive
属性,用于定义应该处理此消息的时间段。
对于第一次尝试中消息处理不成功的情况,我们的计划是将其移动到特定的重试存储(重试队列),然后在成功处理或{{1}时重试消息(重试之间有一些超时)已过期。
如果timeToLive
过期,我们计划记录邮件内容并丢弃邮件。
实际上,这种重试行为主要由我们正在实施的协议决定。
有没有办法用NServiceBus实现这样的行为?我看到,不成功的消息转到特定的timeToLive
。是否可以创建一个单独的总线,指向错误队列?
答案 0 :(得分:4)
我建议您有一个单独的进程,根据您描述的逻辑监视错误队列执行重试。看一下nservicebus附带的ReturnToSourceQueue工具,以获得灵感:
我有一篇关于如何处理可能会给你一些想法的失败的博客文章: http://andreasohlund.net/2010/03/15/errorhandling-in-a-message-oriented-world/
希望这有帮助!