Sidekiq-Konfiguration für mehrere Umgebungen

Ich habe mehrere Quellen untersucht und verschiedene Szenarien ausprobiert, konnte das Problem jedoch nicht beheben. Bitte weisen Sie mich in die richtige Richtung.

Wie jeder habe ich 3 env (Entwicklung, Inszenierung und Produktion).

Ich habe die folgenden in meiner sidekiq.yml-Datei

# 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]

Damit hatte ich gehofft, wenn ich sidekiq mit dem Befehl starte

RAILS_ENV=#{rails_env} bundle exec sidekiq -C config/sidekiq.yml

Es würde alle Werte aus der Konfigurationsdatei abrufen und sidekiq mit den entsprechenden Warteschlangen und der entsprechenden Protokolldatei unter log / sidekiq.log starten, aber das funktioniert nicht. Sidekiq wird gestartet, erstellt jedoch nur die stg_xyz_tests_queue, stg_default_xyz_queue und stg_xyz_default_queue, unabhängig von der verwendeten Umgebung.

Der andere Ansatz, den ich ausprobiert habe, war die Verwendung des folgenden Codes in der Datei config / surroundings / 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

Damit werden die Warteschlangen erstellt, aber die Protokolldatei wird nicht erstellt oder geschrieben, und ich muss diesen Code für alle 3 Umgebungen duplizieren.

Was ist der beste Weg, um Sidekiq für mein Setup zum Laufen zu bringen? Vielen Dank für Ihre Hilfe im Voraus !!!

Antworten auf die Frage(3)

Ihre Antwort auf die Frage