为公共交通配置重试时要处理哪些异常
what exceptions to handle when configuring retry for mass transit
在公共交通消费者中配置 UseScheduledRedelivery 时。应该处理什么的最佳实践是什么。
处理异常是否矫枉过正?是否有可以从中恢复的异常列表?
重投是二级重试。意思是处理一级重试(重试策略)没有恢复的异常。
基本上,您可能想要重试除消息数据引起的异常之外的所有内容。但是,即使是空引用异常也可以重试。例如,您有一个数据库,您尝试获取一条记录并得到空值。这可能是因为记录还不存在,但它会稍后出现,因为队列中有一条消息可以创建它。因此,竞争条件会导致此类异常。
但是,二级重试是不同的。你想用它们来克服,例如,资源匮乏的问题(繁忙的数据库或其他)。这些异常是非常具体的,比如网络超时异常或数据库超时异常。但是没有"list",你需要查看你的系统设计来决定在哪里应用一级重试,在哪里使用二级重试,以及那些处理哪些异常。
我们对所有异常使用重试,对极少数异常使用重新传递,而不是在所有服务中。通常我们会在数据库超时后重新投递。
在公共交通消费者中配置 UseScheduledRedelivery 时。应该处理什么的最佳实践是什么。
处理异常是否矫枉过正?是否有可以从中恢复的异常列表?
重投是二级重试。意思是处理一级重试(重试策略)没有恢复的异常。
基本上,您可能想要重试除消息数据引起的异常之外的所有内容。但是,即使是空引用异常也可以重试。例如,您有一个数据库,您尝试获取一条记录并得到空值。这可能是因为记录还不存在,但它会稍后出现,因为队列中有一条消息可以创建它。因此,竞争条件会导致此类异常。
但是,二级重试是不同的。你想用它们来克服,例如,资源匮乏的问题(繁忙的数据库或其他)。这些异常是非常具体的,比如网络超时异常或数据库超时异常。但是没有"list",你需要查看你的系统设计来决定在哪里应用一级重试,在哪里使用二级重试,以及那些处理哪些异常。
我们对所有异常使用重试,对极少数异常使用重新传递,而不是在所有服务中。通常我们会在数据库超时后重新投递。