議論したように、これを活用しようとしていますが、カスタマイズしているため行き詰まっています。
/config/initializers/100-sidekiq.rb
変更したコードは次のとおりです。
- 各ジョブにアクセス可能なリトライカウント属性を付与し、プラグインで使用して、ジョブがリトライされた回数に応じてワークフローロジックを変更します。
ファイル内で次のように変更します。
- 値を取得するためのカスタムミドルウェアクラスを作成します。
- クラスをチェーンに追加して、含まれるようにします。
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
現在、app.yml のファイル編集スクリプトで sed を使用してこれを実現しています。
これにより、リポジトリの整合性が損なわれるため、バンドルされたコンパイル済みアセットを使用できません。
プラグインからこれらの変更を行う方法についての提案はありますか?