gpt4 book ai didi

ruby-on-rails - Sidekiq Rails 4.2 使用 Active Job 还是 Worker?有什么不同

转载 作者:行者123 更新时间:2023-12-03 09:00:17 25 4
gpt4 key购买 nike

这是我的第一个异步处理作业,我正在我的应用程序中实现 Sidekiq 进行后台处理。我会将它用于提醒电子邮件和应用内通知。我对是否应该使用 Active Job 创建发送电子邮件的作业或 Sidekiq Worker 发送电子邮件感到困惑。他们似乎在做同样的事情,Rails 4.2 Active Job 似乎很新……它是否取代了对 Sidekiq Worker 的需求?

下面是使用 Active Job 作业和 Sidekiq Worker 发送邮件程序代码的相同内容。我正在使用 Every gem 进行调度。

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“ worker ”
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

我的 When 调度程序中的两个示例
日程表
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 称其为 Job,而 Sidekiq 称其为 Worker。我决定保持术语不同,以便人们可以区分这两者。

您可以使用任何一种。请注意,ActiveJob 不提供对全套 Sidekiq 选项的访问,因此如果您想为您的工作自定义选项,您可能需要将其设为 Worker。

关于ruby-on-rails - Sidekiq Rails 4.2 使用 Active Job 还是 Worker?有什么不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29925793/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com