TL;DR
Ruby のバックグラウンドジョブのライブラリ。1 つのプロセスの中でスレッドを使い、多くのジョブを同時に処理する。
なぜ必要か
処理をバックグラウンドのジョブとして実行できる。Sidekiq の README によると、どの Ruby アプリケーションでも使え、Rails と Active Job にも対応している。
仕組み
ジョブのキューには Redis(または Valkey、Dragonfly)を使う。ジョブのクラスは Sidekiq::Job を include し、インスタンスメソッドの perform に処理を書く。クラスメソッドの perform_async でキューに入れ、bundle exec sidekiq で起動したプロセスが処理する。
OSS 版のほかに、機能を拡張した有償の Sidekiq Pro と Sidekiq Enterprise がある。
例
Getting Started の例は次のとおりである。
class HardJob
include Sidekiq::Job
def perform(name, count)
# do something
end
end
HardJob.perform_async('bob', 5)
HardJob.perform_in(5.minutes, 'bob', 5)注意点
perform の引数は文字列、整数、真偽値のような、JSON で表せる単純な型にする必要がある。