논의했던 대로 이 기능을 활용하려고 시도하고 있지만, 제가 다음과 같이 커스터마이징을 하고 있어서 막힌 부분이 있습니다:
/config/initializers/100-sidekiq.rb
제가 수정한 코드는 다음과 같습니다. 저는:
- 각 작업(job)에 접근 가능한 재시도 횟수(retry count) 속성을 부여하고 있으며, 이 값을 플러그인에서 사용하여 작업이 몇 번 재시도되었는지에 따라 워크플로 로직을 변경하고 있습니다.
수정 중인 파일에서 저는
- 값을 가져오기 위한 사용자 정의 미들웨어 클래스를 생성합니다.
- 체인에 해당 클래스를 추가하여 포함되도록 합니다.
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를 사용하는 파일 편집 스크립트를 통해 이를 달성하고 있습니다.
이것은 리포지토리의 위생성(hygiene)을 해치므로, 번들된 컴파일된 에셋을 사용할 수 없습니다.
플러그인에서 이러한 수정 사항을 수행하는 방법에 대한 제안이 있을까요?