ruby-on-rails - 如何使 sidekiq_retries_exhausted 在全球范围内可供所有工人使用
问题描述
所以我想以这样一种方式实现sidekiq_retries_exhausted,当所有重试全局失败时它会自动触发,并且这种行为目前应该适用于我的代码库中的所有工作人员,我必须每次在每个工作人员中编写sidekiq_retries_exhausted,但我想了解的是那里任何方式以便在所有重试失败时触发 sidekiq_retries_exhausted 并且我不必在每个工作人员上编写此函数
所以简而言之,我想覆盖本地 sidekiq_retries_exhausted 并使其像一种中间件一样全局可用,这样当工作人员失败时它会自动触发它所有重试,我不必在每个工作人员中都写这个
目前,它在每个工人中都是这样实施的
sidekiq_retries_exhausted do |msg, error|
AlertOnRetriesExhaustedUtils.send_alert_on_retries_exhausted(msg, error)
end
解决方案
在 sidekiq v5.1 中引入了death_handlers
工作死亡时的全局回调
sidekiq_retries_exhausted 回调特定于 Worker 类。从 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
推荐阅读
- ejabberd - Ejabbed 音频/视频通话在不同的网络上不起作用
- java - RestTemplate 的错误请求-> postForObject (Spring Boot)
- wolfram-mathematica - 运动矢量预测或运动矢量差分如何在编码器中提供压缩?
- python - 在python中对每行的正则表达式匹配进行分组
- node.js - react js前端和nodejs后端中的pubnub集成
- python - Python tksheet,如何更改列名
- svelte - Svelte Mapbox-gl-draw:如何将多边形坐标获取到父组件?
- javascript - 更新 Discord Music Bot .js 中嵌入的“正在播放”
- java - Livedata 观察未运行
- python - 如何在数据框中获取每个用户的最后一行