Sidekiq Rails 4.2 Использовать активную работу или работника? Какая разница
Это мои первые задания на обработку асинхронно. Я внедряю Sidekiq для фоновой обработки в моем приложении. Я буду использовать его для писем с напоминаниями и уведомлений в приложении. Я не понимаю, следует ли мне использовать Active Job для создания работы, которая отправляет электронную почту, или работника Sidekiq для отправки электронной почты. Похоже, что они делают то же самое, и Rails 4.2 Active Job кажется совершенно новым ... заменяет ли он необходимость в Sidekiq Worker?
Ниже та же самая отправка кода почтовой программы, используя задание Active Job и 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
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
Использование активной работы "Job"
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
Оба примера в моем планировщике Everyever 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