Wie besprochen, versuche ich, dies zu nutzen, bin aber auf ein Problem gestoßen, da ich Folgendes anpasse:
/config/initializers/100-sidekiq.rb
Hier ist mein geänderter Code. Ich:
- Gebe jedem Job ein zugängliches Wiederholungszählerattribut, das ich in einem Plugin verwende, um die Workflow-Logik zu ändern, abhängig davon, wie oft ein Job wiederholt wurde.
In der Datei, die ich ändere, ändere ich sie zu:
- Erstellen einer benutzerdefinierten Middleware-Klasse, um den Wert abzurufen.
- Hinzufügen der Klasse zur Kette, damit sie enthalten ist.
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 # <-- NEU
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 # <-- NEU
chain.add Sidekiq::DiscourseEvent
end
Derzeit erreiche ich dies mit einem Skript zur Dateibearbeitung in app.yml unter Verwendung von sed.
Dies beeinträchtigt die Integrität des Repos, sodass ich die gebündelten kompilierten Assets nicht verwenden kann.
Irgendwelche Vorschläge, wie diese Änderungen von einem Plugin aus vorgenommen werden können?