java - Spring Boot中分布式任务调度和Job队列的建议

标签 java spring spring-boot job-scheduling job-queue

要求:

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

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

我可以使用 spring-retry 实现所需的相同功能。但是,有多个容器可用(分布式环境)。 Rabbit-MQAmazon-sqsRedis-quartz 等工具支持此功能。但我不确定哪一个更适合 springboot。

考虑因素:

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

Distributed environment
Consistency
Fault Tolerance
Ease of configuration
Async processing

问题

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

最佳答案

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

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

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

关于java - Spring Boot中分布式任务调度和Job队列的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55850821/

相关文章:

java - 如何用JPA管理多个实体?

java - JSF 2.0 Spring bean 注入(inject)

java - OrderItem (order_orderID) 中的 Hibernate 外键为 null

java - 在同一根上下文下托管静态内容和 JAX-RS 服务

java - 将 Spring Security 与 SiteMinder 集成

java - 如何在方法退出时不使 Spring Boot 应用程序终止

java - 通过 spring rest 模板获取异常的堆栈跟踪

spring-boot - Spring Oauth2 - 自定义TokenEndpoint从@RequestParam到@RequestBody

java - Kubernetes 上微服务之间集群间通信的最佳方式?

java - 依赖注入(inject)如何使测试更容易——需要一个 Java 示例来理解这个概念吗?