问题标签 [spring-retry]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
516 浏览

java - @TransactionalEventListener、@Transactional 和 @Retryable 流

当我在@Transactionaland结尾发布 CustomEvent 时@Retryable(value = StaleStateException.class) method foo(),它是如何处理的?

如果我StaleStateException在方法执行后提交期间得到,则@TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT)不会调用,@RetryableSpring 将foo()第二次调用。CustomEvent在这种情况下,第一个生命周期是什么?会被清理干净吗?还是在第二次成功调用后foo()@TransactionalEventListener()会被调用两次?

0 投票
1 回答
1809 浏览

java - 重试类中所有方法的注解,而不是对每个方法使用@Retryable

我们使用@Retryable 注解重试类中的特定方法。

是否有任何注释可以通常重试类中的所有方法。我们可以移动到类级别,而不是在方法级别进行。

0 投票
1 回答
3537 浏览

java - Spring Retry @Retryable 不重试也不恢复

当我运行我的单元测试时,我希望 thisFails() 方法重试 3 次,然后我希望看到打印的恢复记录器行,但它只尝试一次然后抛出异常。底部的输出是在我运行测试之后。

我错过了什么?

随意忽略这一部分,直接跳到代码。linter 认为我没有足够的说明来发帖。我认为这足以让我的问题得到解决,但由于某种原因,除非我写更多东西,否则我不允许发布这个问题。所以这里有更多的东西,等等。

--Spring Boot 应用程序--

- 服务 -

--测试类--

输出

0 投票
0 回答
603 浏览

spring-batch - 将 spring-retry @EnableRetry 与 spring-batch 一起使用会导致意外代理

我正在尝试在我的批处理作业中使用 spring-retry 库,并将@EnableRetry注释添加到我@Configuration的文档中表明我的应用程序现在失败了,因为它出现了一个正在@Autowired被代理的 spring-batch 库 bean。

例外:

原因:org.springframework.beans.factory.BeanNotOfRequiredTypeException:名为“jobRegistry”的bean应该是“org.springframework.batch.core.configuration.JobRegistry”类型,但实际上是“com.sun.proxy.$”类型代理130'

我已将以下内容添加到单独的类中:

我的问题是为什么这个 bean ( jobRegistry) 被代理了?(我对 AOP 没有太多经验)。

我正在使用spring-boot版本1.5.3.RELEASE

0 投票
1 回答
2803 浏览

java - Spring @Retryable 针对特定条件

是否可以根据某些条件重试?如果我使用 Retryable 进行注释,它将根据一些异常重试,但如果捕获到该异常并满足相应条件,我想重试。例子:

在上面的请求中,我有一个标志,isRetryRequired如果这是真的并且 MyException 被捕获,那么我想重试

0 投票
1 回答
2810 浏览

spring - 基于HttpStatus状态码在spring-retry中调整RetryPolicy?

是否可以根据错误状态代码在 spring 重试中设置 RetryPolicy?例如,我不想使用 HttpStatus.BAD_REQUEST 状态代码(即 400)重试 HttpClientErrorException。因此它应该忽略所有其他错误代码——4XX。

我正在使用 Spring Integration http outboundGateway 来调用服务器。

现在在我的 RequestHandlerRetryAdvice 中,我将重试建议配置为

但这太笼统了,我只是不想重试 400 状态代码。对于所有其他情况,我希望我的模板重试。有人可以在这里建议我一个解决方案吗?

我经历了堆栈溢出问题,我找到了一个相关的答案,但我没有达到我的目的。是否可以根据 HttpStatus 状态码在 spring-retry 中设置 RetryPolicy?

0 投票
1 回答
10583 浏览

java - Spring Retry @Recover 传参

我找不到任何有关我需要采取行动的可能性的信息。我将@Retryable 注释与@Recover 处理程序方法一起使用。像这样:

问题是我不知道如何将我的参数“id”传递给recover() 方法。有任何想法吗?提前致谢。

0 投票
1 回答
213 浏览

spring-integration - 使用 RequestHandlerRetryAdvice 作为每个类的建议

Spring Core Advice API 文档中定义了两种建议:

  • 每类建议 - 不得“依赖于代理对象的状态或添加新状态”
  • 每个实例的建议 - “将状态添加到代理对象”

根据 javadocs, RequestHandlerRetryAdvice具有无状态和有状态的操作模式。

在什么情况下 RequestHandlerRetryAdvice 可以用作每个类的建议?(即使用单个 bean 来通知多个处理程序)。

可以将“无状态模式”实例用作每个类的建议吗?

可以将“有状态模式”实例用作每个类的建议吗?

我找不到有关 RequestHandlerRetryAdvice 是否将状态添加到代理对象的信息,这是应用每个类/每个对象建议的标准条件的必要条件,如 Spring Core 参考中所述。

我的期望是在有状态模式下,建议不能作为每个类使用。

而对于无状态模式,尚不清楚它是否扩展了状态。(如果由多个处理程序共享 - 它要求在任何给定时刻最多有一个处理程序使用重试建议?)

请注意,另一篇文章中的答案暗示它总是可以的,因为它是“线程安全的”。但是,根据 Spring Core 参考文档(上面引用),这种条件不足以允许按类使用。

0 投票
1 回答
2000 浏览

java - 可重试不适用于单独的线程

我正在尝试测试,如果发生异常,我的方法调用是否被重试了几次。如果我直接调用方法,它就可以了。但是如果我在单独的线程中调用它,我的测试方法会失败,它不会看到任何重试尝试。这就是我的方法:

这是我的测试课:

也许我的测试方法是错误的。但是如果我像这样简单地调用我的方法(没有线程):

,我的测试方法运行正常。错误是什么?

0 投票
2 回答
4965 浏览

spring - Spring中不同异常的不同重试尝试@Retryable

在我的 SpringBoot 应用程序中,我有一个可以发送 POST 请求的客户端。在 POST 期间,它可能有几个例外。

如果出现 2 个不同的异常,我希望有一个重试逻辑。但在某种程度上,max-retry-attempts 应该对每个异常生效,而不是一起生效。很难解释,但举个例子:

max-retry-attempts 配置为 3。如果我得到 exception1 类型,而不是重试,我还有 2 次重试。再试一次,再次获得 exception1,然后重试,现在我还剩 1 次重试。再试一次,现在我得到了 exception2,然后再试一次,现在我还有 2 次重试,因为之前的重试是针对 exception1 而不是针对 exception2。所以exception2重试才刚刚开始。

可能吗?我尝试了这个,但这并没有从重试尝试开始,如果发生了异常1,然后发生了异常2,那么我还有1次重试: