sinatra应用程序的多个sidekiq队列

时间:2015-09-02 07:35:11

标签: ruby redis sinatra sidekiq

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

我们已经实现并使用sidekiq对插入数据库的作业进行排队。它到目前为止一直很好。

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

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

请给出一些解决方案。

2 个答案:

答案 0 :(得分:2)

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

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

sidekiq -q csv -q default

然后在你的工人中:

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

  # perform method
end

答案 1 :(得分:1)

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

默认情况下,一切都在内部'默认'队列,但您可以在工作人员中指定队列:

 sidekiq_options :queue => :file_queue

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

:queues:
  - file_queue
  - default 

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