配置重试以进行公共交通时要处理的例外情况

时间:2017-09-08 08:51:30

标签: c# masstransit

在公共交通消费者中配置UseScheduledRedelivery时。什么是应该处理什么的最佳实践。

正在处理异常过度杀伤吗?是否有可以从中恢复的异常列表?

1 个答案:

答案 0 :(得分:1)

重新传递是第二级重试。这意味着它处理未通过第一级重试(重试策略)恢复的异常。

基本上,您可能希望重试除消息数据引起的异常之外的所有内容。但是,即使是null引用异常也可以重试。例如,您有一个数据库,并尝试获取记录并获取null。这可能是因为记录还没有,但是稍后会出现,因为队列中有一条消息要创建它。因此,竞争条件可能导致此类异常。

然而,二级重试是不同的。您希望使用它们来克服资源饥饿问题(繁忙的数据库或其他问题)。这些异常非常具体,例如网络超时异常或数据库超时异常。但是没有“列表”,您需要查看系统设计以确定应用第一级重试的位置以及使用二级重试的位置,以及这些异常由哪些处理。

对于极少数例外情况,我们对所有例外和重新发送使用重试,而不是在所有服务中。通常我们在获得数据库超时后重新启动。