メール送信の非同期処理にsidekiqを使ってみた

参考にさせていただいたサイト

sidekiqの使い方 – Qiita

秩序のないメール送信に Sidekiq (with Active Job) – Qiita

sidekiqを使うとメールを非同期処理できます。
ただ非同期処理をするとログが出ないので、ログを仕込んだ方がいいです。
また、実装段階ではdeliver_laterの非同期処理をいきなり仕込むのではなく、deliver_nowで同期処理をしてログを見ながら実装した方がいいです。

前提

redisをインストールして、redis-severも立ち上がっていること。

Gemfile

gem 'sidekiq'
$ bundle

config

sidekiqを使うことを宣言

# config/application.rb
config.active_job.queue_adapter = :sidekiq

sidekiq立ち上げの設定ファイル

:concurrency: 25
:pidfile: ./tmp/pids/sidekiq.pid
:logfile: ./log/sidekiq.log
:queues:
- default
- mailers
:daemon: true

これで

$ bundle exec sidekiq -C config/sidekiq.yml

と打込めばsidekiqが立ち上がります。

そしてコンソールでメイラーをdeliver_laterで呼び出せばsidekiqを使った非同期メール送信ができます。

ログの仕込み方

    Rails.logger.info 'Log for checking mail_magazines rake task has started'

こんな感じで非同期処理の前後にログを仕込んでおくと、デバッグや動作確認がしやすくなります。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です