提问人:davew 提问时间:11/11/2023 更新时间:11/11/2023 访问量:20
Delayed::Job 钩子和deliver_later
Delayed::Job hooks and deliver_later
问:
在 README 中,在 Rails Mailers (https://github.com/collectiveidea/delayed_job/#rails-mailers) 下,它指出
您可能还希望考虑将 Active Job 与 Action Mailer 一起使用,它提供了方便.deliver_later语法,可在后台转发到 Delayed Job。
这对我来说似乎具有误导性,因为似乎许多延迟作业功能都停止工作。“转发到引擎盖下的延迟工作”这句话,听起来像是 DelayedJob 仍在控制之中。谁能证实或澄清我的误解?
我已经使用 DelayedJob 很长时间了,并在某个时候开始根据自述文件中的注释使用。deliver_later
我刚刚开始使用自定义作业,并且正在清理我的 Rollbar 集成。在 Hooks (https://github.com/collectiveidea/delayed_job#hooks) 一节中,它指出:
注意:如果您使用的是 ActiveJob,则这些挂钩不适用于您的作业。您将需要使用 ActiveJob 的回调。您可以在此处找到详细信息 https://guides.rubyonrails.org/active_job_basics.html#callbacks
从那以后,我通过在邮件程序中抛出异常来对此进行实验,并注意到发送的邮件未作为失败作业报告给 DelayedJob 或按照 DelayedJob 中的配置重试。deliver_later
我还注意到 Rollbar 集成与 DelayedJob :failure 钩子 (https://github.com/rollbar/rollbar-gem/blob/master/lib/rollbar/plugins/delayed_job/plugin.rb) 相关联。
通过声明 Active Mailer“提供了方便的.deliver_later语法,可以在后台转发到延迟作业”,并不清楚我是否错过了 DelayedJob 重试和失败逻辑......以及 Rollbar 的 DelayedJob 集成。
我认为应该添加一个警告来说明警告,因为许多新用户不会在一开始就阅读/吸收有关自定义作业和钩子的所有细节。
以下情况是否属实?“当使用 instead 而不是 时,不会调用 DelayedJob 钩子,因此 DelayedJob 的重试和失败处理将不会被接受。在这种情况下,在使用 时,您应该依赖 ActiveJob 异常处理。deliver_later
delay
deliver_later
环境 | |
---|---|
铁轨 | 5.2.8.1 |
延迟作业 | 4.1.11 |
防滚架 | 3.4.0 |
答: 暂无答案
评论
deliver_later
而不是delay
时,不会调用 DelayedJob 钩子,因此不会遵循 DelayedJob 的重试和失败处理。在这种情况下,在使用deliver_later
时,应依赖 ActiveJob 异常处理。但也表示文档说:“如果您使用的是 ActiveJob,这些钩子不适用于您的工作。您将需要使用 ActiveJob 的回调。