要求:
在我的项目(在分布式环境中运行)中,我们要求在固定时间安排作业,初始延迟为 1 分钟,如果作业执行失败,它将重试,并且最多可以重试 10 次,每次之间有 2 分钟的延迟。
我们可以实现相同目标的工具:
我可以使用 spring-retry
实现所需的相同功能。但是,有多个容器可用(分布式环境)。 Rabbit-MQ
、Amazon-sqs
、Redis-quartz
等工具支持此功能。但我不确定哪一个更适合 springboot。
考虑因素:
以下是选择正确工具时需要考虑的事项:
Distributed environment
Consistency
Fault Tolerance
Ease of configuration
Async processing
问题
基本上我正在寻找类似于 Java(springBoot) 中的 Resqueue 和 sidekiq ruby 实现等价的东西。有人在他们的应用程序中实现了相同的功能吗?如果是这样,什么是更好的选择/方式并提供利弊。欢迎提出建议。
最佳答案
您可以使用 Spring 的 RetryTemplate
,易于配置。
您可以使用 SimpleRetryPolicy
与 FixedBackOffPolicy
在你的情况下。
可以根据您的要求使用 SimpleRetryPolicy
中的 backOffPeriod
属性配置最大重试尝试次数(在您的情况下为 2 分钟)。
这种重试机制很容易插入到 Spring Boot 项目中。
关于java - Spring Boot中分布式任务调度和Job队列的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55850821/