3

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

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

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

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

有没有办法用 NServiceBus 实现这种行为?我明白了,不成功的消息会发送到特定的error queue. 是否可以创建一个单独的总线,指向错误队列?

4

1 回答 1

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-orientation-world/

希望这可以帮助!

于 2010-03-15T13:38:56.933 回答