У меня есть бэкэнд с несколькими экземплярами, которым необходимо поддерживать состояние, подобное распределенной очереди задач, на основе 3 параметров / атрибутов (Org, Project, Target_ID).
Например, для следующих задач, помещаемых в очередь:
Org1-Proj1-Target-1
Org1-Proj1-Target-2
Org1-Proj1-Target-3
Org2-Proj1-Target-10
Org2-Proj2-Target-20
Очередь должна выглядеть так:
Org1-Proj1: [Target-1, Target-2, Target-3, ]
Org2-Proj1: [Target-10, ]
Org2-Proj2: [Target-20, ]
У меня также есть API, доступный для удаления задачи из этого распределенную очередь и удалите запись из таблицы (чтобы отметить ее только один раз для всех вызовов). например: если я затем ПОЛУЧАЮ вызов API для обработки следующей задачи для Org2-Proj1
, я должен вернуть «Target-10», и моя очередь теперь должна выглядеть так:
Org1-Proj1: [Target-1, Target-2, Target-3, ]
Org2-Proj1: []
Org2-Proj2: [Target-20, ]
Другой вызов GET для обработки следующая задача для Org2-Proj1
возвращает пустой объект, а очередь остается прежней.
Я не могу сделать это в памяти, поэтому мне нужно полагаться на что-то вроде сельдерея или, может быть, это можно сделать в redis а также.
Я чувствую, что могу использовать сельдерей, не подключая рабочих, а просто удаляя из правильной очереди то, что я ПОЛУЧАЮ запрос на свой API. Это хороший вариант использования сельдерея? Как еще я могу решить эту проблему?