【问题标题】:Distributed exclusive task with Redisson?Redisson 的分布式独占任务?
【发布时间】:2020-11-25 18:21:19
【问题描述】:

我正在使用 Redisson 分布式执行器服务。任务类 A 旨在处理由其队列 ID 标识的给定队列。有多个这样的队列。我需要确保集群中的任何时候,在同一个队列上工作的任务类 A 的实例不超过一个。

允许:

Task class A instance1 working on queue1    
Task class A instance2 working on queue2

不允许:

Task class A instance1 working on queue1
Task class A instance2 working on queue1

有大量这样的队列并且它们动态变化。所以任务实例的预分配不是一种选择。

对应的,在 Quartz 分布式调度器的世界里,被称为独占作业,由 @DisallowConcurrentExecution 实现。 另一个类似的事情,在 Akka 框架的世界里,默认是由 Actor 模型自动实现的。

如何使用 Redisson 执行器来实现这一点?如果不是直接的,是否可以通过一些分布式锁来实现(这在 Redisson 中非常方便)?

【问题讨论】:

    标签: redis scheduler distributed redisson


    【解决方案1】:

    我一直在寻找类似的东西,并最终编写了自己的分布式任务逻辑,该逻辑在后台使用 Redis 缓存进行协调。 redis 缓存有一个分布式锁(我们选择的任何键)以及下一个执行时间字段。不是最漂亮的东西,但它确实有效。

    我不相信任何东西都是开箱即用的。

    【讨论】:

      猜你喜欢
      • 2021-11-18
      • 1970-01-01
      • 2020-06-19
      • 2017-01-12
      • 2017-02-24
      • 1970-01-01
      • 2023-03-13
      • 1970-01-01
      • 2019-04-22
      相关资源
      最近更新 更多