如何让 sidekiq_retries_exhausted 对全球所有员工可用

how to made sidekiq_retries_exhausted available globally for all workers

所以我想以这样的方式实现 sidekiq_retries_exhausted ,当所有重试失败时自动触发全局并且这种行为应该适用于我的代码库中的所有工作人员 目前,我必须在每个工作人员中每次都写 sidekiq_retries_exhausted 但我想了解的是有什么方法可以让 sidekiq_retries_exhausted 在所有重试失败时触发并且我不必在每个上都写这个函数工人

所以简而言之,我想覆盖本地 sidekiq_retries_exhausted 并使它像一种中间件一样在全球范围内可用,这样当工作人员失败时它会自动触发它所有重试而且我不必把它写在每个工人

目前每个worker都是这样实现的

    sidekiq_retries_exhausted do |msg, error|
      AlertOnRetriesExhaustedUtils.send_alert_on_retries_exhausted(msg, error)
    end

在 sidekiq v5.1 中引入了全局回调 death_handlers 当作业结束时

Death Notification

sidekiq_retries_exhausted 回调特定于 Worker class。从 v5.1 开始,Sidekiq 还可以在作业结束时触发全局回调:

# this goes in your initializer
Sidekiq.configure_server do |config|
  config.death_handlers << ->(job, ex) do
    puts "Uh oh, #{job['class']} #{job["jid"]} just died with error #{ex.message}."
  end
end