ActiveJob是否具有特定优先级的队列?

时间:2015-09-09 13:26:02

标签: ruby-on-rails ruby rails-activejob

查看下面的工作,我会假设作业在low_priority队列上运行。

class GuestsCleanupJob < ActiveJob::Base
  queue_as :low_priority
  #....
end

我同意这一点,但这只是队列的名称正确吗?它实际上与优先级无关。例如,如果我创建了一个名为:my_queue的队列的作业,它将被视为具有与:low_priority队列相同的优先级。

从文档中我无法找到任何表明我可以优先排队的工作。我知道delayed_jobs有这个功能,但我还没有在active_job中找到它。

1 个答案:

答案 0 :(得分:6)

优先级取决于实际的QueueAdapter以及如何配置此适配器。如果您的适配器不支持优先级或未正确配置,那么ActiveJob也无法帮助您。

从此处了解有关适配器的更多详细信息:

http://edgeapi.rubyonrails.org/classes/ActiveJob/QueueAdapters.html

主要内容是:

  

重点是确保所有Rails应用程序都具有适当的作业基础结构。然后我们可以在此基础上构建框架功能和其他宝石,而不必担心各种作业运行程序(如Delayed Job和Resque)之间的API差异。那么,挑选你的排队后端就变成了一个操作问题。而且你可以在不必重写工作的情况下在它们之间切换。

队列配置(包括优先级)成为Adapter的职责。

作为队列配置的示例,请参阅Sidekiq wiki:

https://github.com/mperham/sidekiq/wiki/Advanced-Options#queues

相关问题