Como se discutió, estoy intentando aprovechar esto, pero he encontrado un obstáculo, porque estoy personalizando:
/config/initializers/100-sidekiq.rb
Aquí está mi código alterado, estoy:
- Dando a cada trabajo un atributo de recuento de reintentos accesible que estoy usando en un plugin para cambiar la lógica del flujo de trabajo dependiendo de la cantidad de veces que se ha reintentado un trabajo.
En el archivo que estoy modificando, lo estoy modificando para:
- Crear una clase Middleware personalizada para recuperar el valor.
- Añadir la clase a la cadena para que se incluya.
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 # <-- NUEVO
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 # <-- NUEVO
chain.add Sidekiq::DiscourseEvent
end
Actualmente lo estoy logrando con un script de edición de archivos en app.yml usando sed.
Esto rompe la higiene del repositorio, por lo que no puedo usar los activos compilados incluidos.
¿Alguna sugerencia sobre cómo hacer estas modificaciones desde un plugin?