【发布时间】:2021-01-22 13:46:05
【问题描述】:
我将 Sidekiq 与我的 Rails 应用程序一起使用,并且有大约 30 名工作人员根据用户在 Rails 应用程序中单击的任务以随机顺序启动。有时,sidekiq 作业失败,我必须关闭 sidekiq 并手动调查错误,从而中断所有工作人员(由该用户和任何其他用户启动)
我刚刚实现了一个中间件,这样每次sidekiq作业失败时我终于可以调用一个方法;但是,现在我想知道是否有一种方法可以在 不同 队列中重新运行该作业(比如说“retry_queue”)。
现在,我的 sidekiq 工作人员是这样开始的:
class TestingWorker
include Sidekiq::Worker
sidekiq_options queue: Rails.env.to_sym
这基本上使用环境正在运行的任何队列(例如开发或生产)。但是,鉴于此设置或任何其他设置,我不确定如何实现我的目标。
所以我的问题是:
- 如何将失败的 sidekiq 作业从捕获失败的 sidekiq 工作人员的中间件方法重定向到另一个队列?
- 重定向到另一个队列后,如何重新设计 sidekiq 作业来理解这一点?
理想情况下,如果我能以某种方式改变这一点:
sidekiq_options queue: Rails.env.to_sym
到这样的事情:
sidekiq_options queue: [something here].include? "retry_queue" ? :retry_queue : Rails.env.to_sym
任何想法或建议将不胜感激。
【问题讨论】:
标签: ruby-on-rails sidekiq