如何设置动态resque队列

spa*_*kle 4 ruby-on-rails resque ruby-on-rails-5

我希望我可以决定去哪个队列上班。这是因为如果作业是由服务器(cronjob)调度的,它必须在慢队列中运行,如果由用户运行,它将进入快速队列。我如何在 Resque 中运行它?

控制器

MyJob.perform_later(id, :fast)
Run Code Online (Sandbox Code Playgroud)

耙任务

MyJob.perform_later(id, :slow)
Run Code Online (Sandbox Code Playgroud)

工作

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

  def perform(item_id, queue_name)
     ....
  end
Run Code Online (Sandbox Code Playgroud)

eda*_*edl 8

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

控制器

MyJob.set(queue: :fast).perform_later(id)
Run Code Online (Sandbox Code Playgroud)

耙任务

MyJob.set(queue: :slow).perform_later(id)
Run Code Online (Sandbox Code Playgroud)

set方法允许您设置比队列更多的东西,您还可以设置例如优先级或何时应该执行作业。请参阅文档https://api.rubyonrails.org/v5.2.3/classes/ActiveJob/Core/ClassMethods.html#method-i-set

注意:我想你已经有慢速和快速的 Resque 队列并且正在运行并且只想使用它们