Rails 和 ActiveJobs - 我可以 'join' 它们像线程一样吗?

Rails and ActiveJobs - can I 'join' them like threads?

我正在寻找一种可以让我 'join' 多个 ActiveJob 的设计模式,以便在它们全部完成后,我可以继续执行另一项任务。

假设我有工作 A、B 和 C,它们需要不同的时间才能完成。当它们全部完成后,我想开始工作 D。

这是一种常见的设计模式吗?我可以用什么来实现这一目标?我想到了数据库中的 table ,它只记录剩余要完成的作业总数,然后随着每个完成它递减计数器,当它为零时,任务 D 被排队。但我认为计数器可能存在问题 - 我需要在读写之间锁定 table?

(这是 Rails 6 和 Sidekiq 6)

谢谢...

如果您使用的是 Sidekiq,这称为批处理。这是 Sidekiq Pro 中的商业功能。

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