注册后我有一个模型用户,我想发送邮件以成功注册,但是我想将此任务添加到延迟的工作中,每次注册后发送邮件都会降低我的应用程序性能。在那种情况下,我决定做一个延迟的工作。
[如果您想在应用程序中发送交易邮件,可以使用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
所有条件都取决于您的目的和逻辑。给出的示例是一个想法以及如何实现它。