Fazendo edições na configuração inicial

Conforme discutido, estou tentando aproveitar isso, mas encontrei um obstáculo, pois estou personalizando:

/config/initializers/100-sidekiq.rb

Aqui está meu código alterado, estou:

  • Dando a cada job um atributo de contagem de retentativas acessível que estou usando em um plugin para alterar a lógica do fluxo de trabalho dependendo do número de vezes que um job foi retentado.

No arquivo, estou alterando-o para:

  • Criar uma classe Middleware personalizada para recuperar o valor
  • Adicionar a classe à cadeia para que ela seja incluída
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 # <-- NOVO
   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 # <-- NOVO
    chain.add Sidekiq::DiscourseEvent
  end

Atualmente, estou conseguindo isso com um script de edição de arquivo em app.yml usando sed.

Isso quebra a integridade do repositório, então não posso usar os assets compilados incluídos.

Alguma sugestão sobre como fazer essas modificações a partir de um plugin?

1 curtida

A posição específica na pilha importa? Eu tentei isso em um plugin.rb e pareceu adicionar o middleware :crossed_fingers:

class BreakEverythingMiddleware
  def call(worker, job, queue)
    puts "O middleware funcionou!"
    raise "O MIDDLEWARE FUNCIONOU"
  end
end

Sidekiq.default_configuration.server_middleware { |chain| chain.add BreakEverythingMiddleware }
1 curtida

Não deveria!

Ótima sugestão, vou tentar!

2 curtidas