Modifiche alla configurazione iniziale

Come discusso, sto cercando di sfruttare questo, ma ho riscontrato un problema, perché sto personalizzando:

/config/initializers/100-sidekiq.rb

Ecco il mio codice modificato, sto:

  • Assegnando a ogni job un attributo retry count accessibile che sto utilizzando in un plugin per modificare la logica del flusso di lavoro a seconda del numero di volte che un job è stato ritentato.

Nel file che sto modificando, lo sto modificando per:

  • Creare una classe Middleware personalizzata per recuperare il valore
  • Aggiungere la classe alla catena in modo che sia inclusa
require "sidekiq/pausable"
require "sidekiq/discourse_event"
require "sidekiq_logster_reporter"
require "sidekiq_long_running_job_logger"
require "mini_scheduler_long_running_job_logger"

 module Sidekiq::Middleware::Server # <-- NEW
   class SetRetryCountMiddleware
     def call(worker, job, queue)
       worker.retry_count = job["retry_count"] if worker.respond_to?(:retry_count=)
       yield
     end
   end
 end


Sidekiq.configure_client { |config| config.redis = Discourse.sidekiq_redis_config }

Sidekiq.configure_server do |config|
  config.redis = Discourse.sidekiq_redis_config
  config[:skip_default_job_logging] = false

  config.server_middleware do |chain|
    chain.add Sidekiq::Pausable
    chain.add Sidekiq::Middleware::Server::SetRetryCountMiddleware # <-- NEW
    chain.add Sidekiq::DiscourseEvent
  end

Attualmente lo sto ottenendo con uno script di modifica del file in app.yml usando sed.

Questo compromette l’integrità del repository, quindi non posso utilizzare gli asset compilati inclusi.

Qualsiasi suggerimento su come apportare queste modifiche da un plugin?

1 Mi Piace

La posizione specifica nello stack è importante? Ho provato questo in un plugin.rb e sembrava aggiungere il middleware :crossed_fingers:

class BreakEverythingMiddleware
  def call(worker, job, queue)
    puts "Il middleware ha funzionato!"
    raise "IL MIDDLEWARE HA FUNZIONATO"
  end
end

Sidekiq.default_configuration.server_middleware { |chain| chain.add BreakEverythingMiddleware }
1 Mi Piace

Non dovrebbe!

Ottimo suggerimento, ci proverò!

2 Mi Piace