ActiveJob deliver_later不发送

时间:2016-06-17 01:55:57

标签: ruby-on-rails rails-activejob

我有以下方法:

UserMailer.comment_alert(@comment, user, type).deliver_later

奇怪地在rails log中显示了参数deliver_now

[ActiveJob] Enqueued ActionMailer::DeliveryJob (Job ID: 5bdf9ed1-53d5-42aa-acb2-7ce54ab284e1) to Sidekiq(mailers) with arguments: "UserMailer", "comment_alert", "deliver_now", gid://xxx/Comment/153, gid://xxx/User/26, "Comment"

作业永远不会处理,我在Sidekiq日志中看不到任何内容。也没有送过邮件。我尝试重启sidekiq,rails和redis,甚至清除redis db。有意思地改为.deliver_now,但这似乎没有触及sidekiq或创建Enqueued ActionMailer::DeliveryJob

在我的application.rb中:

config.active_job.queue_adapter = :sidekiq

我正在使用 rails 4.2.6 activejob 4.2.6

2 个答案:

答案 0 :(得分:15)

邮件程序在队列邮件程序中排队。记得启动sidekiq处理该队列:

bundle exec sidekiq -q default -q mailers

或添加config/sidekiq.yml以及以下内容

  :verbose: true
  :concurrency: 25
  :queues:
    - [mailers, 7]
    - [default, 5]

并运行bundle exec sidekiq -C config/sidekiq.yml

答案 1 :(得分:0)

如果您正在使用sidekiq,请不要稍后再使用Delivery,因为该作业永远不会执行,而应使用perform_in(<>)并调用内部带有liver_now的工作程序