问题标签 [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.
java - Spring Retry 中的 @Retryable 注解不会触发
我有一个导致死锁的表更新,并且当该方法获得某种锁定异常时,我试图让 Spring Retry 重试。我试过去掉 maxAttempts、value 和 backoff,但它似乎没有捕捉到任何异常。我错过了什么吗?我需要在 Application 文件中声明一个 bean 吗?任何帮助将非常感激!
应用程序.Java
详细服务
编辑
重写了我上面的 DetailService 以提供更多细节并添加缺少的方法
spring - 如何让 Spring Batch 在一段时间后重试失败的步骤?
如何让 Spring Batch 在一段时间后重试失败的步骤?
如果该步骤失败的次数超过 x 次,我不想再重试该步骤并让整个作业失败。
我正在使用 Java Config,并且不喜欢使用 XML 来配置重试。
spring - Spring Batch - 要读取的文件不可用
我有一个 Spring 批处理作业,第一步是读取文件并写入数据库。如果该文件不存在,我希望系统等待 x 分钟,然后重试该步骤最多 y 次尝试。我怎样才能做到这一点?
细节
ItemReader
如下:
目前,如果file
不存在,则会引发以下异常并且作业失败。
com.myorg.LoadApplication 代码启动批处理应用程序并且是:
更新
在阅读了 dimitrisli 的答案后,我在@Configuration
课堂上尝试了这个(注意:我也添加@EnableRetry
到了配置类中):
ItemStreamException
被抛出并且应用程序退出而不重试。我怎样才能让它重试?
java - Spring Retry 可以与 Spring Batch FlatFileItemReader 一起使用吗
我有以下内容ItemReader
:
运行作业时,要读取的文件(即loadFile
)可能可用也可能不可用。如果文件不可用,我希望阅读器休眠约 30 分钟,然后重试打开文件。如果在五次尝试后找不到该文件,它可能会像通常那样通过抛出ItemStreamException
.
不幸的是,上面的代码不会尝试重试打开文件。它在第一次调用 open 时抛出ItemStreamException
,并且不会重试打开。
有人可以解释如何做到这一点吗?注意:我确实@EnableRetry
在SpringBootApplication
上课。
java - @Retryable 不适用于 Spring-boot-gradle-plugin
我正在尝试通过在我的(spring boot gradle 插件)应用程序中添加重试逻辑@Retryable
。
到目前为止我做了什么:
在类路径中添加了最新的 starter aop:
重试类:
测试逻辑:
但是重试逻辑不起作用。有人有什么建议吗?
spring - @Retryable maxAttempts 超出后如何捕获 Spring Batch 的 ItemStreamException?
我有以下内容ItemReader
:
第 5 次尝试后,如果 ItemStreamExceptionloadFile
不存在,则会引发。我怎样才能捕捉到这个异常?
我想通过向管理员发送电子邮件来处理此异常。我尝试过jobLauncher.run(job, jobParameters);
使用 try catch 子句,但它不起作用。
spring-integration - 如何使用 Spring Integration with Java config 通过 SFTP 每天获取文件?
我需要每天通过 SFTP 获取一个文件。我想将 Spring Integration 与 Java 配置一起使用。该文件通常在每天的特定时间可用。应用程序应每天尝试在该时间附近获取文件。如果文件不可用,它应该继续重试 x 次。在 x 次尝试后,它应该发送一封电子邮件,让管理员知道该文件在 SFTP 站点上仍然不可用。
一种选择是使用SftpInboundFileSynchronizingMessageSource
. 在 中MessageHandler
,我可以开始处理文件的工作。但是,我真的不需要与远程文件系统同步。毕竟,这是文件的预定交付。另外,我最多需要延迟 15 分钟以进行下一次重试,并且每 15 分钟轮询一次对于每日文件来说似乎有点过分。我想我可以使用它,但需要一些机制在经过一段时间后发送电子邮件并且没有收到文件。
另一个选项似乎是使用get
SFTP 出站网关。但我能找到的唯一例子似乎是 XML 配置。
更新
使用以下 Artem Bilan 的回答提供的帮助后添加代码:
配置类:
RetryCompoundTriggerAdvice 类:
spring-amqp - spring amqp enable retry by configuration 并根据指定异常阻止
我有以下两种情况
- 在ExceptionA的情况下:重试有限次,最后当重试次数用尽时,消息被写入死信队列
- 在ExceptionB的情况下:简单地说,应该将消息写入死信队列
我想在同一个侦听器容器工厂和同一个队列上支持这两种情况。
我已经有以下配置来成功支持案例 1:
现在我想扩展之前的配置以支持案例 2。
编辑,感谢加里的快速回复。
这是我的新配置,但我仍然对这两个异常进行重试:ListenerExecutionFailedException、AmqpRejectAndDontRequeueException
spring - 在方法上具有 @Retryable 注释的模拟 Spring @Service 失败并出现 UnfinishedVerificationException
我正在使用Spring Boot1.4.0.RELEASE
和spring-boot-starter-batch
spring-boot-starter-aop
spring-retry
我有一个@Service
在运行时模拟的 Spring Integration 测试。我注意到,如果@Service
该类在其方法上包含任何@Retryable
注释,那么它似乎会干扰Mockito.verify()
,我得到一个UnfinishedVerificationException
. 我想这一定与此有关spring-aop
?如果我注释掉所有@Retryable
注释@Service
然后验证再次正常工作。
我创建了一个github 项目来演示这个问题。
它失败sample.batch.MockBatchTestWithRetryVerificationFailures.batchTest()
在validateMockitoUsage();
有类似的东西:
但是,我有另一个类 ( sample.batch.MockBatchTestWithNoRetryWorking.batchTest()
) 带有一个@Service
没有任何@Retryable
注释的模拟类,并且验证工作正常。
我究竟做错了什么?
在我的 pom.xml 我有以下内容:
然后是所有相关的 Java 类
编辑:根据我放在一起显示问题的示例项目更新了问题和代码。
java - 运行 JUnit 测试时 Spring 的 @Retryable 不起作用
我有这个测试:
然后我有:
然后我有这个接口(我的 abstractService 实现):
但是,当我运行测试时抛出了一个运行时异常,让我相信它没有重试。我做错了吗?