我可以重定向失败的 sidekiq worker 进行调查吗?

Can I redirect a failed sidekiq worker for investigation?

我将 Sidekiq 与我的 Rails 应用程序一起使用,并且有大约 30 名工作人员根据用户在 rails 应用程序中单击的任务以随机顺序启动。有时,sidekiq 作业失败,我将不得不关闭 sidekiq 并手动调查错误,从而中断所有工作人员(由该用户和任何其他用户启动)

我刚刚实现了一个中间件,这样我终于可以在每次 sidekiq 作业失败时调用一个方法;但是,现在我想知道是否有一种方法可以在 不同的 队列中重新 运行 该作业(假设为“retry_queue”)。

现在,我的 sidekiq worker 是这样开始的:

class TestingWorker
  include Sidekiq::Worker
  sidekiq_options queue: Rails.env.to_sym

这基本上使用了环境 运行 中的任何队列(例如开发或生产)。但是,我不确定如何根据此设置或任何其他设置实现我的目标。

所以我的问题是:

  1. 如何从捕获失败的 sidekiq worker 的中间件方法将失败的 sidekiq 作业重定向到另一个队列?
  2. 将其重定向到另一个队列后,如何重新设计 sidekiq 作业才能理解这一点?

理想情况下,如果我能以某种方式改变它:

sidekiq_options queue: Rails.env.to_sym

像这样:

sidekiq_options queue: [something here].include? "retry_queue" ? :retry_queue : Rails.env.to_sym

如有任何想法或建议,我们将不胜感激。

所有重试均失败的作业将进入死集和 Web 中的“死”选项卡 UI。请参阅错误处理 wiki 页面。