【问题标题】:Spring retry strategy on a boolean flag布尔标志上的春季重试策略
【发布时间】:2016-06-13 12:55:19
【问题描述】:

我们计划使用 spring 重试功能并希望在布尔标志而不是异常上重试。当我们使用SimpleRetryPolicy 时,重试似乎只发生在异常上。我们可以对其进行调整或使用不同的重试策略来检查布尔标志吗?

谢谢

【问题讨论】:

  • 如果你检查是否设置了布尔标志然后抛出一个特定的异常?
  • 我的想法完全一样,但我们也在尝试发回一些关于成功和失败的数据,我不喜欢只能在成功时发回。我可以在抛出异常之前将数据存储为实例变量,但我不太喜欢这样。有什么建议吗?
  • 不清楚你想要达到什么RetryTempate完全基于while (canRetry(retryPolicy, context) 和`catch (Throwable e) {`里面while...你可以添加一些变量到RetryContext 通过RetrySynchronizationManager 但我不确定如何实现canRetry() 如果没有异常...

标签: java spring exception spring-retry


【解决方案1】:

Spring(批处理)的重试只处理异常。您可以改为查看Failsafe。例如:

RetryPolicy retryPolicy = new RetryPolicy()
  .retryWhen(null)
  .withMaxRetries(3);

Connection c = Failsafe.with(retryPolicy).get(() -> createConnection());

当结果为null 时,此代码重试createConnection 调用3 次。 Failsafe 也支持各种其他场景。查看project page 了解更多信息。

【讨论】:

    猜你喜欢
    • 2015-11-05
    • 1970-01-01
    • 2018-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-13
    • 2011-09-26
    相关资源
    最近更新 更多