java - spring boot中分布式任务调度和Job queue的建议
问题描述
要求 :
在我的项目中(在分布式环境中运行),我们要求将作业安排在固定时间,初始延迟为 1 分钟,如果作业执行失败,它将重试,并且最多可以在 2 分钟内重试 10 次每个之间的延迟。
我们可以实现相同目标的工具:
我可以使用spring-retry
. 但是,有多个容器可用(分布式环境)。Rabbit-MQ
、Amazon-sqs
、等工具Redis-quartz
支持此功能。但我不确定哪个更适合springboot。
考虑因素:
以下是选择正确工具时需要考虑的事项:
分布式环境
一致性
容错
易于配置
异步处理
问题
基本上我正在寻找类似于 Resqueue 和 sidekiq ruby 在 Java(springBoot)中的等效实现的东西。有没有人在他们的应用程序中实现了相同的功能?如果是这样,什么是更好的选择/方式提供的利弊。欢迎提出建议。
解决方案
您可以使用RetryTemplate
易于配置的 Spring 的。
您可以在您的情况下使用 aSimpleRetryPolicy
和 a FixedBackOffPolicy
。可以根据您的要求使用 中backOffPeriod
存在的属性配置最大重试尝试次数(在您的情况下为 2 分钟)。SimpleRetryPolicy
这种重试机制很容易插入到 Spring Boot 项目中。
推荐阅读
- html - 使用引导程序添加的位置 img
- microcontroller - 在任何现有项目上使用 SK S7G2 板,每次遇到错误
- angular - AngularDart:渲染组件时是否有一个钩子?
- java - Hyperledger Fabric:如何在 Java 链码中返回错误,以便返回到 fabrik-java-sdk 客户端
- python - TypeError:“bytearray”对象不能解释为整数
- eclipse - Eclipse 在 windows 安装时找不到 git
- java - 如何在 Java Swing 中的 Textarea 或 JFrame 上添加 ScrollBar?
- php - 根据 Woocommerce 中的购物车商品尺寸从费用中排除几个运输类别
- python - python selenium 不能与输入元素交互?
- html - Bootstrap 4 输入下拉列表。如何?