地方でリモートワーク in Iwate

東京の受託開発会社でリモートワークしてます。

メール送信の非同期処理に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'

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