首页 > 解决方案 > 我可以重定向失败的 sidekiq 工作人员进行调查吗?

问题描述

我将 Sidekiq 与我的 Rails 应用程序一起使用,并且有大约 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

任何想法或建议将不胜感激。

标签: ruby-on-railssidekiq

解决方案


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


推荐阅读