正如我们所讨论的,我正试图利用这一点,但遇到了一个障碍,因为我正在自定义:
/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 来实现这一点。
这会破坏存储库的完整性,因此我无法使用捆绑的已编译资产。
关于如何从插件进行这些修改的任何建议?