如何创建延迟作业以在[保持中]的Rails中发送邮件

问题描述 投票:-3回答:1

注册后我有一个模型用户,我想发送邮件以成功注册,但是我想将此任务添加到延迟的工作中,每次注册后发送邮件都会降低我的应用程序性能。在那种情况下,我决定做一个延迟的工作。

ruby ruby-on-rails-5 rails-activerecord delayed-job rails-activejob
1个回答
0
投票

[如果您想在应用程序中发送交易邮件,可以使用Mailgun之类的邮件服务,如果您要发送市场营销电子邮件,我的建议是mailchimp

没有任何性能问题...

但是关于示例代码:

# for example: 

# in user model :
class User < ApplicationRecord
 after_create :set_status_emailed
 # or after_update :set_status_emailed

  private
    def set_status_emailed
      YourJob.set(wait: 24.hours).perform_later(self)
      # or 15 minutes ... i.e.
    end
end

# in job :

class YourJob < ApplicationJob
  queue_as :name_of_your_special_queue

  def perform(user)
    # Your logic
    # for example call your mailer :
    # ::Successful::Registration::Mailer.with(user: user).welcome.deliver_later
  end
end


# in config/sidekiq.yml - check your queues
:
queues:
  - critical
  - default
  - low
  - mailers
  - name_of_your_special_queue

所有条件都取决于您的目的和逻辑。给出的示例是一个想法以及如何实现它。

© www.soinside.com 2019 - 2024. All rights reserved.