当前位置: 首页 > 面试题库 >

“重试”逻辑失败的设计模式?

子车桐
2023-03-14
问题内容

我正在编写一些重新连接逻辑,以定期尝试建立与发生故障的远程端点的连接。本质上,代码如下所示:

public void establishConnection() {
    try {
        this.connection = newConnection();
    } catch (IOException e) {
        // connection failed, try again.
        try { Thread.sleep(1000); } catch (InterruptedException e) {};

        establishConnection();
    }
}

我已经在很多情况下使用类似于上面的代码解决了这个普遍的问题,但是我对结果不满意。是否有设计用于解决此问题的设计模式?


问题答案:

值得结帐的一个库是Sarge,它会根据已定义的计划自动执行重试。



 类似资料:
  • 碰到一个问题是这样的,有个老项目,用的jquery进行发送请求,因为环境网络不稳定之类的,会有偶然性的请求失败,SSL连接失败,没有状态码,只要重新发送就能正常了。所以期望能做到如果请求响应失败,且没有状态码时,请求能否每隔半秒自动重试3次。如下代码,在重试期间fail、error、always等回调逻辑不会被触发。 试过使用 $.ajaxPrefilter 和 $.ajaxSetup 对erro

  • 以下是用于实现重试逻辑的类 TestRetry类: RetryListener类: 样本测试: 当我执行上述测试时,以下是输出firsttest被执行并通过第二次测试依赖于firsttest并被执行,其失败-重试3次并再次失败第三次测试跳过,因为它依赖于第二次测试。 产量达到预期。 问:因为测试是依赖的,如果其中一个测试失败,我想先执行整个类,有办法吗? 示例:如果secondtest失败,我想再

  • 主要内容:前言,谁适合阅读本教程,Cat Me,矫情箴言前言 本教程主要讲述 Verilog 完成数字 IC 设计(数字集成电路设计,Digital Integrated Circuit Design) 时涉及的一些知识,更加注重数字电路安全、稳定、方便的实现。将该教程理解为 《Verilog 教程》的高级篇,也再适当不过。 内容主要包括:底层(1章 门级建模、2章 用户自定义原语 UDP、9章 逻辑综合)、时序(3章 时序分析)、优化(4章 同步与异

  • 我试图使用Axon 4.1+中的在一个2 JVM node K8集群上重播事件。虽然我将它设置为清理事件,但它只从一个节点中提取事件,而另一个节点继续运行,因为它的跟踪事件仍然是活动的。 我如何在所有JVM上同时禁用它,以便它能够正确地重播?然后启用所有这些命令,继续处理命令。 我尝试通过这段代码增加线程,这导致了另一个问题,即现有的令牌在InitialSemgmentsCount中永远不会增加,

  • 编辑 继续重试直到promise解决的模式(具有延迟和最大重试次数) #1的代码。不断重试,直到promise解决为止(语言社区有任何改进吗?) 使用 #2的代码继续重试,直到以可重用的方式产生结果(条件是会发生变化的)。

  • 问题内容: 编辑 继续重试直到承诺解决的模式(带有delay和maxRetries)。 在结果满足条件之前一直重试的模式(带有delay和maxRetries)。 具有无限重试次数(提供延迟)的高效内存动态模式。 #1的代码。 继续重试,直到承诺解决为止(该语言是否有任何改进社区?) 采用 #2的代码会 继续重试,直到条件以可重用的方式满足条件为止(条件会有所不同)。 问题答案: 有点不同… 异步