问题标签 [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 投票
2 回答
2237 浏览

java - @Retryable 在 spring-data 存储库接口中不起作用

在我向 spring-data-cassandra 存储库接口添加@Retryable注释后,现在应用程序无法启动并出现以下异常:

应用程序无法启动

行动:

添加proxyTargetClass=true@EnableAsync@EnableCaching,甚至到@EnableRetry(proxyTargetClass = true) @EnableAspectJAutoProxy(proxyTargetClass = true)

但还是不行。

删除后@Retryable,一切正常。

检查了代码,没有@Retryable,在org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(String, Class<T>, Object[], boolean)

requiredType.isAssignableFrom(bean.getClass())也是_true

但添加后@Retryable

所以现在requiredType.isAssignableFrom(bean.getClass()))falsegetTypeConverter().convertIfNecessary(bean, requiredType)抛出异常。

任何人都可以请帮助或提供一些线索如何解决它?谢谢你的帮助。

0 投票
0 回答
1235 浏览

java - 在 Spring 集成中重试 http:outbound-gateway 的建议

我正在尝试为<int-http:outbound-gateway>. 我有以下配置:

在Logback 中DEBUG启用级别org.springframework.integration后,我可以看到 RetryAdvice 正在执行但没有任何重试尝试。

这是预期的行为吗?例如,我收到 404 错误,我预计至少会看到 3 次尝试(重试计数类似于 service-activator),但此时只有一次没有重试计数。

使用 http-outbound-gateway 调用 retryAdvice 的最佳方法是什么?

0 投票
1 回答
1285 浏览

java - 如果没有设置 maxDelay,Spring retryTemplate 会过早触发

我希望我的 RetryTemplate 延迟 300000 毫秒 - 每次尝试 5 分钟乘以 1.1。但是,它只会将下一次尝试延迟 30 秒。这是一个简化的示例:



日志是在这些时间制作的:

如果我在有或没有调度程序的情况下使用它并没有什么区别(因为原始代码需要初始延迟。)

现在,如果我添加一个 maxDelay 到@Backoff

它完全按预期工作 - 5 分钟后发射,然后 5*1.1 分钟后发射,依此类推。但是阅读@Backoff - maxDelay的javadoc,它说它默认为0并且如果小于延迟则被忽略

有什么我不明白的吗?似乎 maxDelay 默认为 30 秒,这与 javadoc 解释的完全不同。

使用的 spring-retry 版本是 1.1.3

0 投票
2 回答
9597 浏览

spring - spring retry 找到最后一次重试

我正在使用Spring-retry-1.2.0,重试工作正常,但在我的方法中,我想知道重试是否是最后一次重试,是否有任何方法可以获取 retrialCount 或春季的最后一次重试-重试?

重审.java

Artem Bilan 发表评论后所做的更改

重试配置

Offers.java

任何帮助都是不言而喻的。

0 投票
3 回答
13929 浏览

java - 如何将 Spring Boot 中的配置属性注入 Spring Retry 注释?

在 Spring Boot 应用程序中,我在 yaml 文件中定义了一些配置属性,如下所示。

还有一个示例 bean

如何将值注入my.app.maxAttemptsSpring my.app.backOffdelayRetry 注释?在下面的示例中,我想将10maxAttempts 和500Lbackoff 值的值替换为配置属性的相应引用。

0 投票
2 回答
4280 浏览

java - Spring 重试和恢复

是否可以从异常中恢复,然后使用 Spring Retry 重试?

在Java中,会像

谢谢!!

0 投票
1 回答
785 浏览

java - 春季重试:NeverRetryLogic 无法按预期使用 ExceptionClassifierRetryPolicy

我正在重试场景中工作(与 http 出站网关相关)。重试逻辑运行良好,但我不重试的逻辑看起来有一个错误。

如果我收到不同于 404,500,503,504 的 http 状态错误,我想做的是不重试。

为了对其进行测试,我有一个可配置的端点,我可以将其配置为在成功之前响应任何 http 状态错误 X 次。

例如,我可以将我的端点配置为在我第一次点击它时获得 http 400 状态,之后,当我重试时,我会得到一个成功的响应。

也就是说,我所期待的是,当我第一次将端点配置为获得 http 400 状态时,永远不会重试,但看起来这不起作用。

我对永不重试场景的逻辑是这样的:

CustomRetryPolicy 是这样的:

根据NeverRetryPolicy班级,它应该这样做:

允许第一次尝试但从不允许重试的 RetryPolicy。也可用作其他策略的基类,例如作为存根用于测试目的。

所以我的理解是,第一次尝试是当我们到达端点时,我们收到 http 400 错误状态,然后再也不重试。

那有什么问题?

0 投票
2 回答
6976 浏览

java - Spring Retry Junit:使用自定义重试策略测试重试模板

我正在尝试测试使用自定义重试策略的重试模板。为了做到这一点,我正在使用这个例子:

https://github.com/spring-projects/spring-retry/blob/master/src/test/java/org/springframework/retry/support/RetryTemplateTests.java#L57

基本上,我的目标是在我得到一些特定的 http 错误状态(例如 http 500 错误状态)时测试我的重试逻辑。

这是我的 junit 的 xml 上下文:

CustomRetryPolicy就像:

我正在测试的 Java 类是:

我究竟做错了什么?我的理解是,使用回调,我正在模拟一个响应,并且我可以处理(使用我的自定义重试策略)该响应。还

[更新]

如果我尝试复制这个 junit,那么我会遇到同样的异常。最具体地说,当尝试在此处MockRetryCallback的类中实例化异常时,它会失败:

0 投票
1 回答
261 浏览

rabbitmq - 代理连接中断时的 Spring AMQP 消息弹性

我有一个在 RabbitMQ 服务器连接中断的情况下管理 Spring AMQP 客户端消息弹性的用例,

同样,我使用了 Spring Retry

但是,当尝试对其进行测试并将代理关闭时,它会挂在 template.convertAndSend() 并且即使在 RabbitMQ 代理连接恢复时也不会恢复

0 投票
0 回答
366 浏览

spring-data-jpa - JPA乐观锁获取不到最新版本

我正在使用 JPA 的乐观锁和 spring data jpa 并使用 spring retry for ConcurrencyFailureException,但是发生了一些我无法理解的事情。

我的测试代码如下:

我在 处添加了一个断点Account account = accountService.findOne("abee19e08d3d4ee79d9f831c3ed78344");,然后我在 mysql 中运行一个事务来更改version帐户。

之后,testOptimistic方法抛出ConcurrencyFailureException,方法重试,在我看来,下一次它会成功但又失败了,最后第三次成功了,我只是无法理解。

Hibernate SQL 的日志如下所示

您可以看到select version from account where id =?第三次执行两次,任何人都可以解释一下吗?!

非常感谢!