【发布时间】:2016-12-01 10:09:08
【问题描述】:
当我们有一段代码经常失败并且必须重试时。然后我们使用重试模式。
try {
//do request here
} catch (Exception e) {
//wait for some millisecond and retry
retry();
}
我们通常会延迟几毫秒,然后再重试该请求。我想知道为什么我们需要一些延迟?如果重试请求没有等待并再次发送请求会发生什么。
【问题讨论】:
-
可能发生的情况是,您用请求敲击服务器并可能使问题变得更糟
-
服务器的问题不太可能在几微秒内得到解决,因此立即重试不太可能奏效,正如 JonK 所说,只会导致问题。
-
这样我们才不会让原来的问题变得更糟。
-
噢,我明白了。非常感谢您根据我的知识添加这个概念。
-
在你手工构建大量这样的东西之前,还要检查有许多现成的用于重试和其他弹性的原语的库,例如github.com/jhalterman/failsafe [没有个人参与]
标签: java design-patterns retrypolicy exponential-backoff