我正在寻找一种设计模式,它可以让我"加入"几个ActiveJobs,这样当它们都完成时,我可以继续执行另一项任务。
假设我有工作A、B和C,它们需要不同的时间才能完成。当它们全部完成时,我想启动作业D.
这是常见的设计模式吗?我可以用什么来实现这一点?我想到了数据库中的一个表,它只记录要完成的作业总数,然后在每次完成时递减计数器,当计数器为零时,任务D就会排队。但我认为计数器可能有问题——我需要在读取和写入之间锁定表?
(这是Rails 6和Sidekiq 6(
谢谢。。。
如果您正在使用Sidekiq,这被称为Batch。这是Sidekiq Pro的一个商业功能。
https://github.com/mperham/sidekiq/wiki/Batches