ruby-on-rails Sidekiq正在将邮件排队到“默认”队列而不是“邮件”队列

rqcrx0a6  于 2023-05-30  发布在  Ruby
关注(0)|答案(1)|浏览(114)

在将我的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吗?

xiozqbni

xiozqbni1#

在Rails 6.1中,他们更改了默认的队列名称。
更多关于变化的信息在这里:https://github.com/rails/rails/pull/40766
在Sidekiq文档中:https://github.com/sidekiq/sidekiq/wiki/Active-Job#queues

相关问题