超过maxDeliveryAttempts

时间:2019-01-29 11:10:59

标签: rebus rebus-rabbitmq

据我了解,maxDeliveryAttempts的默认值为5?
即使在明确地将值设置为5之后,我也观察到重试超过5(最近最多> 10)。 配置是 SetNumberOfWorkers:5,SetMaxParallelism:10,SimpleRetryStrategy(maxDeliveryAttempts:5,secondLevelRetriesEnabled:true),

在处理程序中,如果我们不能作为最佳实践来处理消息,那么我应该显式抛出异常,返回null还是仅让异常传播(此时我捕获异常日志并重新抛出该异常)-可以这会影响行为吗?

我还实现了IHandleMessages>来做一些内部整理。 注意:在rabbitmq中使用rebus

1 个答案:

答案 0 :(得分:0)

首先,Rebus的“最佳实践”是让异常冒出处理程序,并让Rebus进行日志记录。它将每次失败的处理尝试记录为警告,然后在将消息移至错误队列时将所有捕获的异常记录为AggregateException作为错误。

除非在这种情况下启用二级重试:),否则Rebus将在最初的5次警告后继续进行第二轮送达,仅将邮件作为IFailed<TMessage>分发。

如果随后的五次传递尝试也都失败了(例如,因为没有实现IHandleMessages<IFailed<YourMessage>>的处理程序),那么当消息最终移至以下位置时,您将在日志中收到另外5条警告,随后是一条错误消息。错误队列。

我希望可以使它更清晰:)让我知道是否有什么我应该更详细地解释。