如何为 sidekiq 配置指定不同的并发队列?

How can I specify different concurrency queues for sidekiq configuration?

我有以下 sidekiq.yml 配置文件,但我不确定如何构建一个具有较低并发性的单独队列。我该怎么做?

---
:concurrency: 25
:pidfile: ./tmp/pids/sidekiq.pid
:logfile: ./log/sidekiq.log
:queues:
  - default
  - [high_priority, 2]
  - [import_queue, 3]
  - [user_queue, 4]
:daemon: true

虽然我想做类似下面的事情,

---
:concurrency: 25
:pidfile: ./tmp/pids/sidekiq.pid
:logfile: ./log/sidekiq.log
:queues:
  - default
  - [high_priority, 2]
  - [import_queue, 3]
  - [user_queue, 4]
:daemon: true
---
:concurrency: 5
:pidfile: ./tmp/pids/sidekiq.pid
:logfile: ./log/sidekiq.log
:queues:
  - small_queue
:daemon: true

并发是 Sidekiq 进程的 属性,表示它启动了多少个线程。你不能让一个 Sidekiq 进程在两个不同的并发运行;但是,您可以使用单独的配置文件启动两个 Sidekiq 进程:

bin/sidekiq -C config/sidekiq_one.yml
bin/sidekiq -C config/sidekiq_two.yml

但是,根据您的动机,您最好只使用一个 Sidekiq 进程并在其中按优先级排序队列。这样一来,当另一个进程的队列不断增长时,一个进程中的任何工作人员都不会闲置。虽然取决于你的情况,例如如果第二个队列的工作很少但很重要,这样的解决方案确实有意义。