如何使用延迟作业每分钟向 5 个用户发送邮件

How to send mails to 5 user per minute using Delayed Job

我正在使用 rails 5.

我想从我的 rails 应用程序向 100 个用户发送电子邮件。

我已添加 delayed_job gem 以异步发送电子邮件。

代码如下:

控制器:

UserMailer.delay.send_mail(email, subject, body)

邮寄者:

def send_mail(email, subject, body)
  mail(to: email, subject: subject, body: body, content_type: "text/html")
end

问。我需要知道,如何每分钟向 5 个用户发送邮件?

问。如果我用delayed_job给100个用户发邮件,那么在delayed_jobtable下就有100个工作。我可以批量发送邮件吗?

假设您想向每个收件人发送相同的主题和正文,我会使用 find_in_batches and the run_at 参数。

# UserMailer
def send_email_batch(emails, subject, body)
  emails.each do |email|
    send_email(email, subject, body)
  end
end

# Controller
now = Time.current
User.find_in_batches(batch_size: 5).with_index do |users, batch|
  UserMailer.delay(run_at: now + batch * 60).send_email_batch(users.map(&:email), subject, body)
end