【问题标题】:multiple sidekiq queue for an sinatra applicationsinatra 应用程序的多个 sidekiq 队列
【发布时间】:2015-11-27 14:33:52
【问题描述】:

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

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

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

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

请给出一些解决方案。

【问题讨论】:

    标签: ruby redis sinatra sidekiq


    【解决方案1】:

    您可能需要高级队列选项。在这里阅读它们: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
    

    【讨论】:

    • 感谢您提供的重要信息。很高兴知道这一点。我只是好奇如何从两个不同的队列中处理这些作业?它们是并行处理的吗?
    • 是的。而且不仅不同的队列是并行处理的。默认情况下,单个队列中有 25 个作业,每个作业并行执行。
    【解决方案2】:

    看看 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-22
      • 1970-01-01
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 2017-12-22
      • 1970-01-01
      相关资源
      最近更新 更多