要求:
在我的项目(在分布式环境中运行)中,我们要求在固定的时间安排作业,初始延迟为1分钟,如果作业执行失败,它将重试,并且最多可以重试10次彼此之间有2分钟的延迟。
我们可以实现相同功能的工具:
我可以使用 spring-retry
实现相同的所需功能。但是,有多个可用的容器(分布式环境)。 Rabbit-MQ
,Amazon-sqs
,Redis-quartz
之类的工具支持此功能。但是我不确定哪一个更适合springboot。
要考虑的因素:
以下是选择正确工具时需要考虑的内容:
分布式环境
一致性
容错
易于配置
异步处理
问题
基本上,我正在寻找类似于Java(springBoot)中与Resqueue和sidekiq ruby实现类似的东西。有人在他们的应用程序中实现了相同的功能吗?如果是这样,那么利弊带来的更好的选择/方式是什么。欢迎提出建议。
答案 0 :(得分:0)
您可以使用易于配置的Spring RetryTemplate
。
您可以将SimpleRetryPolicy
与FixedBackOffPolicy
结合使用。
可以根据您的要求(在您的情况下为2分钟)使用backOffPeriod
中的SimpleRetryPolicy
属性配置最大重试次数。
此重试机制很容易插入Spring Boot项目。