加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 20:44:22 所属栏目:百科 来源:网络整理
导读:这是我的第一个处理作业异步地在我的应用程序中实现了Sidekiq进行后台处理.我将使用它提醒电子邮件和应用内通知.我很困惑我是否应该使用活动作业创建一个发送电子邮件的工作或者Sidekiq工作人员发送电子邮件.他们似乎做同样的事情,Rails 4.2 Active Job似乎
这是我的第一个处理作业异步地在我的应用程序中实现了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选项的访问,因此如果您要自定义您的工作选项,您可能需要使其成为“工人”.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读