【问题标题】:Retrying with Spring Retry based on error message or status code?基于错误消息或状态码使用 Spring Retry 重试?
【发布时间】:2022-01-06 06:50:58
【问题描述】:

我正在使用 spring-retry 依赖项,目前有一个用 @EnableRetry 注释的 Java Spring Boot 应用程序类,以及一个用下面注释的函数

@Retryable(value = MongoException.class,
   maxAttempts = 4, backoff = @Backoff(delay = 100))

这使我可以重试该函数的所有 MongoException 类型的异常。但是,id 喜欢根据特定的状态码甚至是抛出的错误消息进行重试。这可以通过 Spring Retry 实现吗?

【问题讨论】:

标签: java spring-boot microservices spring-retry


【解决方案1】:

@Retryable方法中,捕获异常;那么:

RetrySynchronizationManager.getContext().setExhaustedOnly()`

并重新抛出它(或其他异常类型)。

将禁用重试并直接转到@Recover 方法(如果提供),否则将被抛出给调用者。

或者,如上面@geobreze 评论中所述,使用exceptionExpression https://docs.spring.io/spring-retry/docs/api/current/org/springframework/retry/annotation/Retryable.html#exceptionExpression--

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-07
    • 2019-09-20
    • 2019-03-27
    • 1970-01-01
    • 2020-06-05
    • 2017-07-20
    相关资源
    最近更新 更多