10

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

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

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

从文档中我找不到任何表明我可以优先考虑排队的作业的信息。我知道delayed_jobs 有这个功能,但是我在active_job 中没有找到。

4

1 回答 1

6

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

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

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

主要内容是:

重点是确保所有 Rails 应用程序都有一个工作基础设施。然后,我们可以在此基础上构建框架功能和其他 gem,而不必担心各种作业运行器之间的 API 差异,例如 Delayed Job 和 Resque。那么,选择你的队列后端就变成了一个操作问题。您将能够在它们之间切换,而无需重写您的工作。

队列配置(包括优先级)成为适配器的责任。

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

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

于 2015-09-09T13:46:31.733 回答