ruby-on-rails – Sidekiq Rails 4.2使用活跃的工作或工人?有什么不同

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – Sidekiq Rails 4.2使用活跃的工作或工人?有什么不同前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这是我的第一个处理作业异步地在我的应用程序中实现了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

解决方法

简短的回答是他们是一回事. ActiveJob将其称为作业,而Sidekiq将其称为“工人”.我决定保留术语不同,以便人们能区分两者.

你可以使用任何一个.请注意,ActiveJob不提供对完整的Sidekiq选项的访问,因此如果您要自定义您的工作选项,您可能需要使其成为“工人”.

猜你在找的Ruby相关文章