17

我有一个 Rails 应用程序,其中有一个发送大量电子邮件的方法。我想执行此操作asynchronously。为此,我尝试使用Sidekiq,但无法使其正常工作 - 它不发送任何电子邮件。

以前可以发送电子邮件,所以我确定我的电子邮件设置设置正确。

在我的gemfile我有这个:

gem 'sidekiq'

我已经跑了bundle install。我也安装redis了,按照RailsCasts #366上的说明进行操作。

我从sidekiq以下命令开始:bundle exec sidekiq,这导致如下图所示:

在此处输入图像描述

application.rb我有以下内容:

config.active_job.queue_adapter = :sidekiq

我尝试发送这样的电子邮件:

Mailer.deliver_new_competition_notification(member.user,   @competition).deliver_later!

我没有收到任何错误,但电子邮件永远不会发送。

那么,我错过了什么吗?

4

2 回答 2

46

您需要使用邮件队列启动 sidekiq 以获取这些作业:

bundle exec sidekiq -q default -q mailers

Sidekiq Wiki 在这里详细介绍了这些场景。

于 2015-03-01T16:58:15.527 回答
7

您也可以修改 config/sidekiq.yml:

---
:concurrency: 25
:pidfile: ./tmp/pids/sidekiq.pid
:logfile: ./log/sidekiq.log
:queues:
  - default
  - mailers

并运行 sidekiq -C config/sidekiq.yml

于 2016-11-01T09:28:18.210 回答