Open3
Rails / Sidekiqについての技術調査メモ
概要
- Railsで利用するSidekiqについて、技術的な概要をメモする
基本
流れ
client
- Sidekiq Clientが後で実行するjobを作成する
# どちらでも同じ
MyJob.perform_async(1, 2, 3)
Sidekiq::Client.push('class' => MyJob, 'args' => [1, 2, 3]) # Lower-level generic API
Redis
- Sidekiqに対するデータストレージとなる。
Server
- Redisのqueueからjobを摘み取って実行する。
- Railsの全てのAPIが利用可能
SidekiqがRedisからjobsを取り出す流れ
BRPOPによってjobを取り出している
Sidekiq uses BRPOP to fetch a job from the queue in Redis.
- 上記のドキュメントは、「BRPOPの場合は情報を取り出し後にRedisから一度削除されるため、そのままsidekiqのプロセスが閉じるなどしたときにjobのデータが失われてしまう問題を、Sidekiq Pro」なら解決できる、という趣旨。
BRPOPとは
- データを読み取る際にブロッキングを行う。
- BLPOPはlistの先頭からデータを読み取り、BRPOPは最後からデータを読み取る違いがあるが、それ以外は同じである。BLPOPの方がドキュメントが詳しいのでそちらを見る