我们计划在我们的应用程序中使用NServiceBus来分派消息。在我们的示例中,每条消息都有timeToLive属性,该属性定义了应该处理该消息的时间段。
对于第一次尝试消息处理不成功的情况,我们的计划是将其移动到特定的重试存储(重试队列),然后在成功处理或timeToLive过期时重试消息(重试之间有一些超时)。
如果timeToLive过期,我们计划记录消息内容并丢弃消息。
实际上,这种重试行为主要是由我们正在实现的协议决定的。
有什么方法可以用NServiceBus实现这样的行为吗?我明白了,不成功的消息会发往特定的error queue。是否可以创建一个单独的总线,指向错误队列?
发布于 2010-03-15 21:38:57
我建议您有一个单独的进程来监控错误队列,根据您描述的逻辑执行重试。看看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/
希望这能有所帮助!
https://stackoverflow.com/questions/2446993
复制相似问题