我当前使用延迟作业异步处理作业。我经常使用.delay方法,而不是创建工人。
我想转到sidekiq,但我有太多类型的作业,无法确保所有作业都是线程安全的。所以我想并行运行延迟作业和sidekiq,并一次迁移一种类型的作业。
既然delayed job和sidekiq都提供了.delay方法,我如何区分两者呢?还有其他潜在的问题吗?

最佳答案

对于sidekiq 2.17.1和更高版本,在rails初始化器中的某个地方,调用以下命令:

Sidekiq.hook_rails!
Sidekiq.remove_delay!

您将只有前缀sidekiq_delay方法等等。
official document
对于旧版本的sidekiq:
config/initializers/sidekiq.rb中输入以下内容
module Sidekiq::Extensions::Klass
  alias :sidekiq_delay :delay
  remove_method :delay
  alias :sidekiq_delay_for :delay_for
  remove_method :delay_for
  alias :sidekiq_delay_until :delay_until
  remove_method :delay_until
end

module Sidekiq::Extensions::ActiveRecord
  alias :sidekiq_delay :delay
  remove_method :delay
  alias :sidekiq_delay_for :delay_for
  remove_method :delay_for
  alias :sidekiq_delay_until :delay_until
  remove_method :delay_until
end

module Sidekiq::Extensions::ActionMailer
  alias :sidekiq_delay :delay
  remove_method :delay
  alias :sidekiq_delay_for :delay_for
  remove_method :delay_for
  alias :sidekiq_delay_until :delay_until
  remove_method :delay_until
end

然后可以使用sidekiq_delay在sidekiq中排队,并调用delay在延迟作业中排队。

关于ruby - 同时运行延迟的作业和Sidekiq,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13306215/

10-14 02:48