Spring Retryable - 异步上下文

时间:2018-01-22 08:38:16

标签: java interrupted-exception spring-retry

在Async上下文中遇到@Retryable问题,我有一个返回SocketTimeOut异常的服务调用。我本来希望重试3次,我确实有@EnableRetry,但是我在日志中看到一些我很奇怪的东西,一个sleep interruptedException。这是堆栈跟踪的一部分。

  

引起:java.lang.InterruptedException:睡眠中断   在org.springframework.retry.interceptor.RetryOperationsInterceptor.invoke(RetryOperationsInterceptor.java:118)〜[spring-retry-1.2.1.RELEASE.jar!/:na]   at someservice.somemethod(someservice.java)〜[classes /:na]   2018-01-18 18:59:39.818 INFO 14 --- [lTask​​Executor-1] someExceptionHandler:线程在睡眠时被中断;嵌套异常是java.lang.InterruptedException:sleep中断   在org.springframework.retry.backoff.ThreadWaitSleeper.sleep(ThreadWaitSleeper.java:30)〜[spring-retry-1.2.1.RELEASE.jar!/:na]   在org.springframework.retry.backoff.StatelessBackOffPolicy.backOff(StatelessBackOffPolicy.java:36)〜[spring-retry-1.2.1.RELEASE.jar!/:na]   at java.util.concurrent.FutureTask.run(FutureTask.java:266)[na:1.8.0_141]   在org.springframework.aop.framework.CglibAopProxy $ DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:673)〜[spring-aop-4.3.8.RELEASE.jar!/:4.3.8.RELEASE]   在org.springframework.aop.framework.CglibAopProxy $ CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:738)〜[spring-aop-4.3.8.RELEASE.jar!/:4.3.8.RELEASE]

不确定这是否是红鲱鱼,但是在读取超时发生后会发生这种情况,我本来希望它重试但我会在日志中看到这一点。我知道Spring重试的默认等待时间为1秒,我想知道它是否被中断,从而对其重试能力产生影响。

T.I.A

1 个答案:

答案 0 :(得分:0)

  

引起:java.lang.InterruptedException:睡眠中断

只是意味着你的应用程序中的其他内容正在等待backOff时中断线程,从而中止了重试场景。

这是设计......

if (this.logger.isDebugEnabled()) {
    this.logger
            .debug("Abort retry because interrupted: count="
                    + context.getRetryCount());
}

...当你打断一个帖子时,你明确告诉它要停止它正在做的事情(如果它正在做一些可以中断的事情,比如睡觉)。