Rails и ActiveJobs - могу ли я присоединиться к ним как к потокам? - PullRequest
0 голосов
/ 21 апреля 2020

Я ищу шаблон проектирования, который позволил бы мне «присоединиться» к нескольким активным заданиям, чтобы после их завершения я мог продолжить выполнение другой задачи.

Скажем, у меня есть задания A, B и C, которые требуют различного количества времени для завершения. Когда они ВСЕ завершены, я хочу начать задание D.

Это обычный шаблон проектирования? Что я могу использовать для достижения этой цели? Я подумал о таблице в базе данных, которая просто хранит счетчик общего количества заданий, оставшихся для выполнения, а затем при каждом завершении счетчик уменьшает счетчик, а когда он равен нулю, задача D ставится в очередь. Но я думаю, что могут быть проблемы со счетчиком - мне нужно заблокировать таблицу между чтением и записью?

(Это Rails 6 и Sidekiq 6)

Спасибо ...

1 Ответ

1 голос
/ 22 апреля 2020

Если вы используете Sidekiq, это называется Batch. Это коммерческая функция в Sidekiq Pro.

https://github.com/mperham/sidekiq/wiki/Batches

...