Sidekiq 的延迟扩展将在 Sidekiq 7.0 中删除



我正在运行:

  • ruby 3.1.1
  • 轨道7.0.2.3
  • Sidekiq 6.4.1

我是从早期版本的集群升级的,我在initializers/sidekiq.rb 中有这行代码

Sidekiq::Extensions.enable_delay!

我收到一条警告信息,上面写着

config/ininitializers/sidekiq.rb:3:警告:sidekiq的延迟扩展将在sidekiq 7.0 中删除

但是我找不到该怎么办。如何替换延迟扩展提供的功能。我目前只在电子邮件中使用它。

从Sidekiq版本5开始,他们默认禁用了延迟扩展,并在此处记录了他们的推理。由于它们的灵活性,它们很容易被滥用。如果您使用的延迟扩展只是为了将来运行作业,那么您可以使用两个替换项。

Sidekiq处理这一问题的方法被称为Scheduled Jobs,它看起来有点像SomeSidekiqWorker.perform_in(3.hours, 'argument 1', 'argument 2'),或者如果你有一个想要执行作业的特定时间,则为perform_at

这个功能现在也内置在ActiveJob(Rails指南,API文档(中,看起来像SomeJob.set(wait: 3.hours).perform_later('argument 1', 'argument 2')

使用标准rails mailer的最简单选项是这样的,它们在后台使用ActiveJob机制(API文档(。

WelcomeMailer.welcome(User.first).deliver_later(wait: 3.hours)
WelcomeMailer.welcome(User.first).deliver_later(wait_until: 3.hours.from_now)

他们正在转向第三方宝石。https://github.com/mperham/sidekiq/issues/5076

最新更新