我有以下方法:
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
答案 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的工作程序