當 Rails 在 vm 上有好幾台機器, 像是 load balance
有某個 worker 只在特定的 vm 上跑。
可能有某個 API 有設定 IP 白名單。
可以在 sidekiq.yml 設定

1
2
3
4
5
6
7
# sidekiq.yml

...

# 設定以下 queues
:queues:
- [<%= `hostname`.strip %>, 2]

這時候會在 sidekiq 後台可以看到多了名稱的 queues
就可以在 job 設定 sidekiq_options queue: "#{Rails.env}-1"

1
2
3
4
5
6
7
8
9
10
# frozen_string_literal: true

class Notice::SendSmsJob
include Sidekiq::Worker
sidekiq_options queue: "#{Rails.env}-1"

def perform(order_number, msg)
...
end
end

console

這樣你的 job 就可以指定要在哪台機器上運作了

參考文章
https://www.mikeperham.com/2013/11/13/advanced-sidekiq-host-specific-queues/