【发布时间】: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