【问题标题】:deliver_later with no retryDeliver_later 不重试
【发布时间】:2015-11-28 13:51:42
【问题描述】:

如何使用 activeMailer 和 deliver_later 禁用重试?

我最近遇到了一个问题,我的一个邮件方法由于视图中的语法错误而静默失败。我们使用deliver_later 发送消息

当它最终被发现并修复时,所有失败的旧消息都被重新尝试然后传递。这些是时间敏感消息,不应重试。

我似乎找不到任何方法来做类似.deliver_later(retry: false) 这样的事情 使用deliver_now 可以解决这个问题吗?

我使用delayed_job 作为我的消息队列。

【问题讨论】:

    标签: ruby-on-rails actionmailer rails-activejob


    【解决方案1】:

    ActiveJob 不会触及适配器的重试设置 (https://github.com/rails/rails/blob/master/activejob/lib/active_job/queue_adapters/delayed_job_adapter.rb)。如果您完全禁用 DJ 中的重试机制(Delayed::Worker.max_attempts = 4

    【讨论】:

    • 谢谢。令人失望,这不是我想在全球范围内改变的事情。
    • 如果你使用延迟作业,你可以这样做Delayed::Job.enqueue(job, :attempts => 1)
    猜你喜欢
    • 2016-10-18
    • 2020-01-06
    • 2016-02-15
    • 2018-07-01
    • 1970-01-01
    • 2019-03-16
    • 2018-03-31
    • 2023-01-19
    • 2017-01-15
    相关资源
    最近更新 更多