在将我的Rails 6.0应用程序升级到Rails 7.0.3时,我遇到了以下问题:
Sidekiq正在通过default
队列而不是像以前那样通过mailers
队列来排队我所有的mailer作业。
相关代码:
在application.rb中:
config.active_job.queue_adapter = :sidekiq
我的邮件:
class UserMailer < ActionMailer::Base
def staff_welcome(user, password)
@user = user
@password = password
mail(to: user.email, from: "DummyName <#{APP_CONFIG[:notifications_email]}>", reply_to: "#{APP_CONFIG[:outbound_email]}", subject: "Your staff account has been created")
end
然后,在控制器内部,我调用mailer如下:
def create
@user = User.new
@user.attributes = users_params.merge(state: 'active', source: :dummy_source, activity: 1)
set_roles(users_params)
respond_to do |format|
if @user.save
if @user.staff?
UserMailer.staff_welcome(@user, params[:user][:password]).deliver_later
我很想知道为什么升级到Rails7后我的邮件队列会发生变化?当我使用Rails6运行服务器时,邮件通过mailers
队列排队,但使用Rails7时,队列是default
。
我明白如果我从ActiveJob内部调用mailer,并且在控制器内部调用该作业而不是直接调用mailer,我将能够使用像queue_as :mailers
这样的语法。这是解决问题的正确方法吗?
我检查了sidekiq的更新日志,但找不到与此相关的任何内容?他们是否改变了默认队列,当谈到邮件?
另外,我可以使用deliver_later
函数设置sidekiq_options吗?
1条答案
按热度按时间xiozqbni1#
在Rails 6.1中,他们更改了默认的队列名称。
更多关于变化的信息在这里:https://github.com/rails/rails/pull/40766
在Sidekiq文档中:https://github.com/sidekiq/sidekiq/wiki/Active-Job#queues