TLTR;
- Active Jobはバックグラウンドジョブを扱うためのフレームワークであり、一種のラッパーです。
- Active Jobは、様々なバックグラウンドジョブフレームワーク(例:Sidekiq、Delayed Job、Resque)をサポートするためにアダプターパターンを使用し、抽象化された統合API(例:enqueue)を提供します。
- Railsはサードパーティのバックグラウンドジョブフレームワークを使用しない場合、バックグラウンドジョブフレームワークの代わりにインメモリ方式を使用します。
- バックグラウンドジョブフレームワークは、ほとんどの場合、キューを使用してジョブを管理し、ワーカーがジョブを取得して処理する方式で動作します。
- ワーカーはバックグラウンドでキューに保存されたジョブを処理する独立したプロセスやスレッドです。ワーカーはジョブキューからジョブを取得して実行します。複数のワーカーを同時に実行できるため、並行してジョブを処理できます。
- 一部のバックグラウンドジョブフレームワークは優先順位を設定することができます。
バックグラウンドジョブフレームワークの動作
- ジョブの予約:
開発者は特定の時間に実行されるジョブを予約します。例えば、perform_atメソッドを使用してジョブを予約します。
予約されたジョブはRedisやデータベースに保存され、実行時間の情報も一緒に保存されます。 - ジョブスケジューラー:
スケジューラーは定期的にストレージをチェックして、実行時間になったジョブを確認します。
実行時間になったジョブは予約ストレージから通常のジョブキューに移動されます。 - ジョブの実行:
ワーカーは通常のジョブキューを監視し、キューにあるジョブを取得して実行します。
ジョブが完了すると、ワーカーは次のジョブを処理します。
参考