我正在运行:
- 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