用户可以创建一个Project
包含多个任务的对象。当用户告诉项目execute
所有这些任务都放在 Sidekiq 的默认队列中时。
问题是:如果用户创建了一个包含 1000 个任务的项目并点击了execute
按钮,那么所有这 1000 个任务都会被放入队列中。如果就在这之后,另一个用户创建了一个只有一个任务的项目,当他点击执行这个项目时,它的唯一任务被放在行尾。
我希望这个后台进程以更民主的方式工作。如果每个项目都有自己的队列,则很可能第二个项目中的一个任务在 1000 个任务队列结束之前执行。
为此,我需要为每个项目设置单独的队列,并且它应该是动态创建的。我正在尝试使用以下内容而不是perform_async
:
Sidekiq::Client.push('queue' => "project_#{self.project.id}", 'class' => TaskWorker, 'args' => [self.id])
但是,当我尝试execute
一个项目时,所有任务都放在一个名为“project_somenumber”的队列中,但没有一个任务被执行。似乎当我使用时Sidekiq::Client.push
,我需要告诉队列开始执行。这是对的吗?我怎样才能开始那个队列?