首页 > 解决方案 > spring boot中分布式任务调度和Job queue的建议

问题描述

要求 :

在我的项目中(在分布式环境中运行),我们要求将作业安排在固定时间,初始延迟为 1 分钟,如果作业执行失败,它将重试,并且最多可以在 2 分钟内重试 10 次每个之间的延迟。

我们可以实现相同目标的工具:

我可以使用spring-retry. 但是,有多个容器可用(分布式环境)。Rabbit-MQAmazon-sqs、等工具Redis-quartz支持此功能。但我不确定哪个更适合springboot。

考虑因素:

以下是选择正确工具时需要考虑的事项:

分布式环境
一致性
容错
易于配置
异步处理

问题

基本上我正在寻找类似于 Resqueue 和 sidekiq ruby​​ 在 Java(springBoot)中的等效实现的东西。有没有人在他们的应用程序中实现了相同的功能?如果是这样,什么是更好的选择/方式提供的利弊。欢迎提出建议。

标签: javaspringspring-bootjob-schedulingjob-queue

解决方案


您可以使用RetryTemplate易于配置的 Spring 的。

您可以在您的情况下使用 aSimpleRetryPolicy和 a FixedBackOffPolicy。可以根据您的要求使用 中backOffPeriod存在的属性配置最大重试尝试次数(在您的情况下为 2 分钟)。SimpleRetryPolicy

这种重试机制很容易插入到 Spring Boot 项目中。


推荐阅读