我目前使用延迟作业来异步处理作业。我没有创建工人,而是使用.delay
方法很多。
我想转到 Sidekiq,但我的工作类型太多,无法确保所有工作都是线程安全的。所以我想并行运行 Delayed Job 和 Sidekiq,并一次迁移一种类型的作业。
由于 Delayed Job 和 Sidekiq 都提供.delay
方法,如何区分两者?还有其他潜在问题吗?
对于 Sidekiq 2.17.1 及更高版本,在 Rails 初始化程序中的某个位置,调用以下命令:
Sidekiq.hook_rails!
Sidekiq.remove_delay!
你只会有前缀sidekiq_delay
方法等。
(官方文件)
对于旧版本的 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
在延迟作业中排队。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)