有关 Spring 引导中的分布式任务调度和作业队列的建议



要求 :

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

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

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

需要考虑的因素:

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

分布式环境
一致性

错 易于配置
异步处理

问题

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

您可以使用 Spring 的RetryTemplate,这很容易配置。

您可以在您的案例中使用带有FixedBackOffPolicySimpleRetryPolicy。 可以根据您的要求(在本例中为 2 分钟)使用SimpleRetryPolicy中存在的backOffPeriod属性配置最大重试次数。

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

分布式任务的替代方案包括

  • 用于 JVM 的 Raft 库
  • CP模式中使用的Hazelcast(使用Raft)
  • K8S(使用etcd)
  • 春云领事
  • 数据库调度程序
  • 阿卡有一个单例

相关内容

  • 没有找到相关文章

最新更新