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



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

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

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

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

这基本上使用运行环境的任何队列(例如开发或生产)。然而,我不确定如何完成我的目标给定这个或任何其他设置。

我的问题是:

  1. 如何将失败的sidekiq作业从捕获失败的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中的dead set和dead选项卡。参见错误处理wiki页面。

最新更新