问题标签 [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 回答
1088 浏览

java - 即使在抛出 NullPointerException 之后,Spring Batch 指数重试也不会启动

我有以下用于春季批量指数重试的配置,但是当我故意抛出NullPointerException. 为什么?

Spring批量指数重试配置:

重试提交作业:

在我的单元测试场景中调用此批处理的类:

相关日志:

0 投票
2 回答
1855 浏览

spring-integration - spring集成kafka错误处理

我们开始在一个项目中使用 spring-integration-kafka,但找不到任何关于消费者端错误处理建议方法的文档。
理想情况下,我们想要一个不阻塞线程的退避重试策略,因此,似乎无状态重试建议不是一种选择;但是,我找不到使用 Kafka 的有状态重试建议的示例。
关于我们应该如何使用 spring-integration-kafka 处理错误重试的任何建议?谢谢。

0 投票
1 回答
3316 浏览

rabbitmq - 使用重试模板使用 Spring AMQP 配置重试功能的问题

我正在尝试在我的 Spring Integration 项目中配置重试功能,我正在尝试按照本文第 3.3.1 节中提供的详细信息连接到 Rabbit 服务器。但看起来重试策略没有生效。这就是我的配置中的内容:

根据该片段,我希望重试以指数间隔发生 3 次。但是根据日志,我看到重试尝试以 7 秒的间隔进行,并且它会永远持续下去(3 次后不会停止)。

想知道是否有人可以指出我的配置有什么问题。

0 投票
2 回答
12236 浏览

java - Spring注解@Retryable——如何设置拦截器

我在类@Retryable中的方法上使用注释@Service

它的工作原理就像一个魅力:我直接从 RabbitMQ 收到一条消息,直到没有错误或尝试次数达到 5 才得到确认,当时消息直接发送到 DLQ,就像我一样通缉。

我唯一的问题是我需要从属性文件中动态设置 maxAttempts。解决方案应该是设置一个拦截器,但只有一个会导致错误,例如当我有:

其中 myInterceptor 定义为:

我得到一个无限循环,但有以下异常:

我很确定我把它保持得太简单了,但我不知道什么可能导致这个错误以及如何解决它,有人知道发生了什么吗?

0 投票
1 回答
2923 浏览

java - BackOffPolicy 和 SimpleRetryPolicy 在注入 RetryTemplate 时无效

我正在使用 Spring AMQP 发送消息并能够对“自定义”异常执行重试。假设我有一个抛出自定义异常“EventException”的接收器,为此,我希望有n次重试(在我们的示例 5 中)。在重试之间,我也希望有 5 秒的延迟。这是我的源代码:

现在在代码中,如您所见,我正在使用RetryOperationsInterceptor来拦截并检查它被抛出的异常类型,并基于此,决定是否重试,以及之间的延迟重试。

为此,我设置了RetryTemplate Bean 的backoffPolicyretryPolicy并将其注入到 RetryOperationsInterceptor 中。

如果有人可以帮助我并告诉我为什么重试和重试之间的延迟不起作用,我将不胜感激。我的消息将直接发送到死信交换,而不会发生重试和延迟。

谢谢你!

0 投票
0 回答
879 浏览

spring - Spring批处理-当在编写器中抛出跳过异常时,JSR 352重试失败

我正在尝试调查在编写器中抛出异常时会发生什么。根据理论,我期望发生回滚,然后重试块设置提交大小为 1。但这没有发生,我收到以下错误。

我正在使用 Spring Batch -JSR 352 作业设计。在作者中,我有 3 个 JDBC 调用。如果我在成功执行 2 个 JDBC 调用后抛出一个可跳过的异常,那么我会发现 Spring 批处理无法回滚该块的事务并通过将提交大小设置为 1 来重试该块。我收到以下执行,之后整个块被跳过并且我们正在进行块提交。结果,已经写入 2 个 JDBC 表的数据被持久化,缺少第 3 个表数据。

我附上我的配置文件以供参考。通过调试,我可以发现我的插入语句正在由 spring 管理的事务下执行,我确信事务管理器配置没有问题

0 投票
2 回答
6758 浏览

java - 为什么 Spring @Retryable 不提供重试?

我只是使用 @Retryable 注释设置了最简单的 Spring 应用程序。

根据 Spring 文档(https://github.com/spring-projects/spring-retry),runRest方法应该运行三次,因为它会抛出异常(特别是 org.springframework.web.client.ResourceAccessException)。但是,我没有观察到任何重试。使用 @Retryable 作为参数 ResourceAccessException 没有帮助。

0 投票
2 回答
12256 浏览

java - @Retryable 在 Spring Boot 应用程序中由集成测试触发时不重试

我在 SpringBoot 应用程序的服务中有一个简单的方法。我使用@Retryable 为该方法设置了重试机制。
我正在尝试对服务中的方法进行集成测试,并且当方法抛出异常时重试不会发生。该方法只执行一次。

0 投票
1 回答
1627 浏览

spring - @Retryable 与 JPA 产生问题

这篇文章之后,我正在尝试使用 @Retryable 实现我的 Invoice bean 的 save() 方法,以使我的应用程序更加可靠。我正在使用 Spring JPA + Hibernate。

我的服务有一个接口:

这是实现:

模拟错误(财务编号重复)我在日志中看到 Spring 尝试重做事务,但 Hibernate 会话似乎有问题。

这个奇怪的错误出现在控制台中:

Spring重试不应该对应用程序的其余部分透明吗?代码中的问题在哪里?

谢谢

0 投票
1 回答
692 浏览

jms - Spring Integration JMS Issue

We are using Spring Integration to consume messages from a queue and the requirement is to send the message to Error queue if there is any issue in the processing of the message consumed. Flow works fine but one issue we see is when there is any exception thrown in processing of message, the message is redirected to the Error queue which we have configured but it is appended by the entire stack trace of the exception. We are looking only for the original message to be delivered to the queue. Below is the configuration we have done,