sinatra 应用程序的多个 sidekiq 队列

multiple sidekiq queue for an sinatra application

我们在 Sinatra 应用程序上有一个 Ruby。我们使用sidekiq和redis进行队列处理。

我们已经实现并使用了 sidekiq 来排队插入数据库的作业。到目前为止它工作得很好。

现在我想添加另一个作业,它将从数据库中读取批量数据并导出到 csv 文件。

我不希望这两个作业都在同一个队列中,而是可以在同一个应用程序中为这些作业创建不同的队列吗?

请给出解决方案

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

默认情况下,所有内容都在 'default' 队列中,但您可以在您的 worker 中指定一个队列:

 sidekiq_options :queue => :file_queue

并告诉 sidekiq 处理你的队列,你必须在配置文件中声明它:

:queues:
  - file_queue
  - default 

或将其作为参数传递给 sidekiq 进程:sidekiq -q file_queue

您可能需要高级队列选项。在这里阅读它们:https://github.com/mperham/sidekiq/wiki/Advanced-Options

从命令行创建 csv 队列(也可以在配置文件中完成):

sidekiq -q csv -q default

然后在你的 worker 中:

class CSVWorker
  include Sidekiq::Worker
  sidekiq_options :queue => :csv

  # perform method
end