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

spring-batch - 使用 ftp:outbound 通道通过 spring 集成重试发送文件

我有一个包含两个步骤的工作春季批处理作业,我想在 ftp 发送步骤中添加一个重试逻辑。

  • 第一步从数据库中读取并输出 xml 文件
  • 第二步使用spring集成将此文件发送到ftp主机

第二步配置如下

并且 ftpOutputChannel 使用 DefaultFtpSessionFactory 配置了 ftpClientFactory

我想在第二步中添加重试逻辑,这将在与远程 ftp 主机的连接失败时重试/恢复。

使用 spring 集成 2.2.2 和 spring batch 2.1.19

0 投票
2 回答
4487 浏览

spring-integration - Spring Integration & Retry:我是否需要为每个服务激活器使用单独的重试 bean?

我有一个 spring 集成管道,并且我有许多不同的服务激活器,我想为其启用重试。

我想使用相同的重试策略(即重试次数、退避策略等)。我可以只有一个实现重试策略的 bean 并将其用于多个不同的服务激活器,还是每个服务激活器都需要自己的重试 bean?换句话说,我可以只制作一个 bean“retryWithBackupAdviceSession”并将其设置为多个服务激活器的 request-hadler-advice-chain 吗?还是每个人都需要自己的?

这是我正在使用的重试策略的示例。

作为后续问题,如果我的服务激活器在执行器通道中运行,它是否以某种方式跟踪每个线程的重试次数?或者我需要做些什么来确保在同一个线程安全服务激活器上重试不同消息的不同线程之间没有串扰?

0 投票
3 回答
3469 浏览

java - 春季重试setRetryableExceptions,setFatalExceptions不可用

根据第 9.2 节中的 spring 批处理/重试文档(http://docs.spring.io/spring-batch/reference/html/retry.html),可以通过 setRetryableExceptions 指定要重试或不重试的异常或使用 SimpleRetryPolicy 时的 setFatalExceptions。但是,这些方法未在 GitHub https://github.com/spring-projects/spring-retry/blob/master/src/main/java/org/springframework/retry/的当前版本(1.0.3)中定义重试策略.java

那么,这是文档错误吗?如果不是,那么方法在哪里?

从源代码来看,似乎只有可重试的异常可以通过带有异常映射的构造函数来设置。似乎没有办法定义致命异常。

0 投票
1 回答
1435 浏览

rabbitmq - RabbitMQ 和 Spring amqp 重试而不阻塞消费者

我正在使用 RabbitMQ 和 Spring amqp,我不希望丢失消息。通过使用指数回退策略进行重试,我可能会阻止我的消费者,他们可能正在处理他们可以处理的消息。我想给失败的消息几天以使用指数回退策略重试,但我不希望消费者阻塞几天,我希望它继续处理其他消息。

我知道我们可以使用 ActiveMQ(在将来某个时间点重试消息(ActiveMQ) )来实现这种功能,但无法为 RabbitMQ 找到类似的解决方案。

有没有办法使用 Spring amqp 和 RabbitMQ 实现这一目标?

0 投票
3 回答
4450 浏览

java - 确保 spring 托管 bean 的单个实例

我创建了一个弹簧方面来处理重试机制。我还创建了一个重试注释。以下是重试注释的代码和处理此注释的方面。

要启用注释,我需要实例化 RetryInterceptor 类。我想确保对于给定的上下文,该对象只有一个实例。如果由于某种原因创建了多个对象,我的建议会被应用很多次。我怎样才能完全确保总是有 1 个实例?

0 投票
1 回答
633 浏览

spring - 将批处理功能添加到集成流

我目前有一个运行良好的 Spring Integration 流程(参见图表链接)。我想在我当前的配置之上添加 Batch 以允许使用指数回退、断路器模式重试并将作业持久化到数据库以重新启动。

集成流由一个接收 Message<MyObj> 的网关组成,该网关最终被路由到将 Message<MyObj> 转换为 Message<String> 的 Transformer。然后,聚合器接受 Message<String> 并最终释放连接的 Message<String>(使用大小释放策略和带有超时的 MessageGroupStoreReaper)。然后,连接的字符串是使用 SFTP 出站通道适配器上传的文件的有效负载。

我已经搜索、通读文档、查看了大量示例,但我不知道如何将流程的最后一步封装到批处理作业中。如果在上传过程中出现 SFTP 连接问题或引发其他异常,我需要能够重试上传字符串(作为文件的有效负载)。我还希望能够在出现故障时重新启动(使用数据库支持的 JobRepository),所以我认为使用 Retry Advice 是不够的。

请解释并帮助我了解如何将这些部分连接在一起以及使用哪个(作业启动网关、MessageToJobRequest 转换器、ItemReader、ItemWriter??)。我也不确定如何访问每个 Message<String> 并发送到 Job、Step 或 Tasklet 内的 SFTP 通道适配器。

电流:http://i.stack.imgur.com/GnurV.png

0 投票
1 回答
213 浏览

rabbitmq - 调用 RecoveryCallback 的任何方式在 RabbitTemplate 发送操作中?

我目前正在使用 Spring AMQP 版本1.3.6.RELEASE和 Spring Retry 1.1.2.RELEASE。根据 Spring AMQP 文档第3.3.1节,可以通过传入RetryTemplate.

是否有任何现有的能力来提供RecoveryCallback<T>实现?我正在查看RabbitTemplate.java实现,但找不到任何内容。

我正在考虑的用例是,如果*Send()由于代理关闭而导致执行失败,我想实现自己的自定义逻辑。

我知道我可以将convertAndSend()调用包装在自己的RetryTemplate实现中并实现 atry { ... } catch (AmqpException e) { ... }但如果 Spring AMQP 提供了更清晰的实现,我不想走这条路。

0 投票
1 回答
1791 浏览

logging - logging messages on retry of rabbit message

We're using RabbitMQ in our application to queue payment requests, and have another queue to send results back to the caller. In both cases, the client has requested a retry policy that will retry forever, but will put something in the log on each retry like "Retrying transaction for the xth time..." so that an external system can detect stuff backing up by monitoring the log file.

I'm creating listener container thus:

and defining the retry logic thus:

So the retry works flawlessly, but I can't find a hook to actually log anything on the retries. Is there something I'm missing? Is there a hook in there somewhere to execute something on the retry? Something I can subclass? Or is there some exsting logging buried within the retry logic in Spring that I can just enable in my logger config?

Thanks.

Chris.

0 投票
1 回答
1352 浏览

spring-retry - @Retryable 是否适用于 JDK 动态代理?

我一直在尝试 spring-retry 项目。我已经成功使用了它的 @Retryable 功能,但我无法使用 JDK 动态代理让它工作。

我在测试中使用了以下代码片段。

此处提供示例项目: https ://github.com/maddenj-ie/retry.git

所以,我的问题是

  1. 这应该使用 cglib 或 JDK 动态代理吗?

  2. 如果是这样,我的设置有什么问题?

谢谢您的帮助。

问候,乔

0 投票
3 回答
11514 浏览

spring - 是否可以根据 HttpStatus 状态码在 spring-retry 中设置 RetryPolicy?

是否可以根据错误状态代码在 spring 重试( https://github.com/spring-projects/spring-retry )中设置 RetryPolicy ?例如,我想HttpServerErrorException使用HttpStatus.INTERNAL_SERVER_ERROR状态码重试,即 503。因此它应该忽略所有其他错误代码 - [500 - 502] 和 [504 - 511]。