複数のソースを調べてさまざまなシナリオを試しましたが、これを解決できなかったため、問題が発生しました。私を正しい方向に向けてください。
みんなのように、私は3つのenv(開発、ステージング、本番)を持っています。
Sidekiq.ymlファイルに次のものがあります
# Options here can still be overridden by cmd line args.
# sidekiq -C config.yml
---
:verbose: false
:namespace: xyz
:logfile: log/sidekiq.log
:concurrency: 25
:strict: false
:pidfile: tmp/pids/sidekiq.pid
:queues:
- [stg_xyz_tests_queue, 10]
- [stg_default_xyz_queue, 2]
- [stg_xyz_default_queue, 3]
development:
:verbose: true
:concurrency: 15
:queues:
- [dev_xyz_queue, 10]
- [dev_default_xyz_queue, 2]
- [dev_xyz_default_queue, 3]
staging:
:queues:
- [stg_xyz_queue, 10]
- [stg_default_xyz_queue, 2]
- [stg_xyz_default_queue, 3]
production:
:queues:
- [prod_xyz_queue, 10]
- [prod_default_xyz_queue, 2]
- [prod_xyz_default_queue, 3]
これで私はコマンドでsidekiqを開始するときにそれを望んでいました
Rails_ENV=#{Rails_env} bundle exec sidekiq -C config/sidekiq.yml
構成ファイルからすべての値を取得し、log/sidekiq.logにある適切なキューとログファイルでsidekiqを開始しますが、それは機能しません。 Sidekiqは起動しますが、使用する環境に関係なく、stg_xyz_tests_queue、stg_default_xyz_queue、およびstg_xyz_default_queueのみを作成します。
私が試したもう1つのアプローチは、config/environment /development.rbで次のコードを使用することでした。
#configure Sidekiq for dev environment
Sidekiq.configure_server do |config|
config.options[:namespace] = "xyz"
config.options[:concurrency] = 25
config.options[:verbose] = true
config.options[:strict] = false
config.options[:logfile] = "log/sidekiq.log"
config.options[:pidfile] = "tmp/pids/sidekiq.pid"
queues = Array.new
10.times do
queues.Push "dev_xyz_queue"
end
2.times do
queues.Push "dev_default_xyz_queue"
end
3.times do
queues.Push "dev_xyz_default_queue"
end
config.options[:queues] = queues
puts "Sidekiq server config options for development => #{config.options.to_yaml}"
end
これにより、キューは正常に作成されますが、ログファイルは作成または書き込まれず、3つの環境すべてに対してこのコードを複製する必要があります。
私のセットアップでsidekiqをシームレスに機能させるための最良の方法は何ですか?事前にご協力いただきありがとうございます!!!
-eオプションを使用します
bundle exec sidekiq -e beta -C config/sidekiq.yml
すべての環境(開発、ステージング、本番)が同じサーバー上にある場合は、名前空間を使用します。 initializers/sidekiq.rbファイルで、
Sidekiq.configure_server do |config|
config.redis = { url: 'redis://localhost:6379/0', namespace: "sidekiq_app_name_#{Rails.env}" }
end
Sidekiq.configure_client do |config|
config.redis = { url: 'redis://localhost:6379/0', namespace: "sidekiq_app_name_#{Rails.env}" }
end
ログの設定、および環境サポートに使用します。
bundle exec sidekiq -d -L log/sidekiq.log -e production -C config/sidekiq.yml