ジョブキューを自前で実装する #4451
Labels
💬Discussion
Being discussed or needs discussion
✨Feature
This adds/improves/enhances a feature
packages/backend
Server side specific issue/PR
Summary
なかなかニーズに合うジョブキューが存在しないため自作する
そうすればMisskeyの動作に最適化することもできる(#4450みたいに)
RedisよりもMongoDBの方が知識があるのでMongoDBを使いたいけど、それだと新しいジョブが作成されたことをリアルタイムに知ることができない
ポーリングして定期的に新しいジョブがないか確認する…?
それするくらいならRedisのpub/sub使う方が良さそうな気も
あとアトミック性の確保をどうするか
複数のワーカーがいるなかでジョブが作成されてもどれかひとつのワーカーだけがそれを捌くようにしなければいけない
それと、ジョブ処理中にプロセスが落ちるなどして応答がなくなったジョブについて、自動的に「待機中」の状態に戻さなければいけない
これはジョブの処理を開始してから一定期間経っても完了しなかったり進捗を更新しなかったり失敗とマークされないジョブを定期的にクロールして状態を変えれば良さそう
その「一定時間」はジョブごとに設定できるのが便利そう
ジョブのライフサイクル:
待機中(waiting) --> 処理中(active) --> 失敗かつ再試行上限にまだ達していないならwaitingに戻す
ジョブを一覧したり個別にキャンセルしたりできるAPIも用意して管理画面からの操作もできるようにする
Related to #4450
Related to #4442
The text was updated successfully, but these errors were encountered: