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

C# NServiceBus异常处理和消息重试机制,c#,.net,exception-handling,nservicebus,C#,.net,Exception Handling,Nservicebus,我们计划在应用程序中使用NServiceBus来发送消息。 在我们的例子中,每条消息都有timeToLive属性,定义了处理该消息的时间段 对于消息处理在第一次尝试中不成功的情况,我们的计划是将其移动到特定的重试存储(重试队列),然后在成功处理消息或timeToLive过期时重试消息(重试之间有一些超时) 如果timeToLive过期,我们计划记录消息内容并丢弃消息 实际上,这种重试行为主要由我们正在实现的协议决定 是否有任何方法可以通过NServiceBus实现这种行为?我明白了,不成功的消息

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

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

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

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


是否有任何方法可以通过NServiceBus实现这种行为?我明白了,不成功的消息会进入特定的
错误队列
。是否可以创建一个指向错误队列的单独总线?

我建议您使用一个单独的进程来监控错误队列,并根据您描述的逻辑执行重试。请看一看nservicebus附带的ReturnToSourceQueue工具,以获取灵感:

我有一篇关于如何处理失败的博客文章,也可能会给你一些想法:


希望这有帮助

谢谢你,安德烈亚斯。在提出这个问题之前,我已经阅读了你的文章)。您能告诉我是否可以在一个进程中托管多个消息总线吗?是正常还是nservicebus不支持此功能?或者,如果多条总线在一个进程中工作,可能会受到严重的性能惩罚?在默认配置模式下,每个应用程序域只能有一条总线。问题是,您可能希望将错误队列放在一台单独的机器上,并让所有其他进程将其错误移动到那里。然后,您将有一个单独的进程/总线从错误队列中馈电,执行您自己的自定义逻辑