Распределенная эксклюзивная задача с Redisson? - PullRequest
0 голосов
/ 05 августа 2020

Я использую службу распределенного исполнителя Redisson. Класс задач A предназначен для обработки заданной очереди, идентифицированной ее идентификатором очереди. Таких очередей несколько. Мне нужно убедиться, что в любое время в кластере существует не более одного экземпляра класса задач 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 автоматически достигается моделью актора по умолчанию.

Как этого можно достичь с помощью исполнителя Redisson? Если не напрямую, можно ли этого добиться с помощью некоторой распределенной блокировки (что очень удобно в Redisson)?

...