我正在编写一些重新连接逻辑,以定期尝试建立与出现故障的远程端点的连接。本质上,代码如下所示:
public void establishConnection() {
try {
this.connection = newConnection();
} catch (IOException e) {
// connection failed, try again.
try { Thread.sleep(1000); } catch (InterruptedException e) {};
establishConnection();
}
}
我已经多次使用与上述类似的代码解决了这个普遍问题,但我对结果感到很不满意。是否有专为处理此问题而设计的设计模式?
原文由 Naftuli Kay 发布,翻译遵循 CC BY-SA 4.0 许可协议
无耻插件:我已经实现了一些类来允许重试操作。该库尚未可用,但您可以 在 github 上进行分叉.并且存在一个 叉子。
它允许使用各种灵活的策略构建重试器。例如:
然后您可以使用 Retryer 执行一个可调用(或多个):