这是我的第一个处理作业异步地在我的应用程序中实现了Sidekiq进行后台处理.我将使用它提醒电子邮件和应用内通知.我很困惑我是否应该使用活动作业创建一个发送电子邮件的工作或者Sidekiq工作人员发送电子邮件.他们似乎做同样的事情,Rails 4.2 Active Job似乎很新,是替代Sidekiq工作者的需要吗?
以下是使用活动作业作业和Sidekiq Worker发送邮件代码的相同方式.我正在使用每当宝石进行调度.
my_mailers.rb
class MyMailers < ActionMailer::Base def some_mailer(r.user_id) @user = User.find(r.user_id) mailer_name = "ROUNDUP" @email = @user.email @subject ="subject text" mail(to: @email,subject: @subject,template_path: ‘/notifer_mailers',template_name: 'hourly_roundup.html',) end
使用Sidekiq“工人”
some_worker.rb
class SomeWorker include Sidekiq::Worker def perform() @user = User.all @reminders = @user.reminders.select(:user_id).uniq.newmade @reminders.each do |r| MyMailers.some_mailer(r.user_id).deliver_later end end end
使用活动作业“作业”
some_job.rb
class SomeJob < ActiveJob::Base queue_as :mailer def perform() @user = User.all @reminders = @user.reminders.select(:user_id).uniq.newmade @reminders.each do |r| MyMailers.some_mailer(r.user_id).deliver_later end end end
两个例子在我的每次调度程序
schedule.rb
require File.expand_path(File.dirname(__FILE__) + "/../config/environment") set :path,Rails.root set :output,Rails.root.join('log','cron.log') #using a worker every 1.day,:at => '4:30 am' do runner SomeWorker.perform_async end #using a job every 1.day,:at => '4:30 am' do runner SomeJob.perform_async end
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。