私はQuartz.netを使用する社内で使用するジョブスケジューリングシステムのアップグレードに取り組んでいます。最新バージョンのQuartzのソースを見ると、.NET 4.0で出荷されたスレッドプール(System.Threading.Tasksのもの)が大幅に改善されたのに対して、独自のスレッドプール実装が使用されていることに気付きました。Quartz.net +タスク並列ライブラリ
スケジューリング機能にはQuartz.netを、スレッドプーリングにはTPLを使用するジョブスケジューリングシステムを誰も正常に実装しているかどうか不思議です。 QuartzのスレッドプールをTPLのスレッドプールと交換するのは比較的簡単ですか? QuartzはTasksの世界ではまだまだ関連性がありますか?また、.NET 4.xのスレッドプール(コア認識、ローカルキュー、改良されたロックなど)の大きな改善点として販売されているQuartzのスレッドプールは、一般的な粗粒のバックグラウンドジョブに十分であり、価値がありませんミックスにTPLを強制する努力?
これら2つのツールを一緒に使用する(または使用しない)ことについての洞察は、事前にお知らせください。
ありがとうございました。遅い無人バックグラウンドジョブを実行するためにスーパーターボチャージスレッドプールを必要としないかもしれないという私の感情を確認したと思います。 –
2つの組み合わせで潜在的な落とし穴がありますか?例を挙げると、トリガーされたときにデータベースから作業を取得するジョブをスケジュールしたいと思います。この作業は、Parallel.ForEachで実行する50〜100個の個別作業です。これが爆発する条件はありますか? – avesse
彼らは一緒にうまく協力する必要があります。通常のロギングと例外処理ルーチンを用意してください。あなたがProgram.csのメインがスローすると同じように思える、それは同じことです。再試行フラグをエラー時のコンテキストに設定するか、次回の実行を待つことを検討することをおすすめします。ジョブを偶発的にすることをお勧めします。 –