自分が担当するRailsアプリケーションでバックグラウンドジョブを動かす必要が出てきた。
Railsでバックグラウンドジョブといえば二大巨頭の Resque と Sidekiq があると思っている。どちらかといえば最近採用されているイメージがあるSidekiqに関して、どんなコードになっているか主要な部分をチェックしておきたい。
今回は、Railsにsidekiqを組み込んでジョブを登録する部分まで。Sidekiqを直接使ってジョブを登録する方法と、ActiveJob経由で登録する方法の2つを比べて見る。
まとめ
- Sidekiqを直接使用する場合、Redisのコネクションプールを用意しておき、それを使用して各Jobの情報をキューにpushしているだけ。ジョブの登録に関してはシンプルだった。
- ActiveJob経由もバックエンドを抽象化している分、少しコードが複雑になっているが、やっていることはほとんど同じだった。あとコードが綺麗で読みやすい。
- Redisに登録される情報は以下の通り。
- 「queues」というSetにキューの名前を登録。
- 「queue:default」というListにジョブの情報を追加。ジョブの情報はクラス(class)、ジョブの引数(args)、ID(jid)等。
- ActiveJob経由の場合、クラスは
ActiveJob::QueueAdapters::SidekiqAdapter::JobWrapper
になっている。