如何设置动态Resque队列

4

我希望自己能够决定去哪个队列工作。

这是因为如果工作由服务器(cronjob)安排,它必须在慢队列上运行,如果由用户运行,则会进入快速队列。

如何在Resque中运行此操作?

控制器

MyJob.perform_later(id, :fast)
Rake任务
MyJob.perform_later(id, :slow)

工作

class MyJob < ApplicationJob
  queue_as :default #<-- This has to be dynamic

  def perform(item_id, queue_name)
     ....
  end
1个回答

11

我看到您正在使用ActiveJob,您可以使用set方法设置队列:

控制器

MyJob.set(queue: :fast).perform_later(id)

Rake 任务

MyJob.set(queue: :slow).perform_later(id)

set方法不仅可以设置队列,还可以设置其他内容,例如优先级或工作执行的时间。请查看文档https://api.rubyonrails.org/v5.2.3/classes/ActiveJob/Core/ClassMethods.html#method-i-set

注意:我假设您已经设置并运行了慢速和快速的Resque队列,并且只想使用它们。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接