2012-01-10 5 views
0

私はIStatefulJobを実装し、石英のドキュメントによるとQuartz .net IStatefulJob - トリガーを削除しますか?

"if a job is stateful, and a trigger attempts to 'fire' the job while it is already 
executing, the trigger will block (wait) until the previous execution completes" 

はとにかくブロックを削除し、ジョブの新規火力インスタンスを殺す方法があるジョブを作成しましたか?

私が実行しているジョブがその背後にあるデータの量に基づいて、乱暴に異なる実行時間を持つことができると私はもし我々はそれが負の効果を持つことができることを実行するために待機中のジョブの数を持っていることを懸念しています...

ありがとう

答えて

1

残念ながら、ジョブの作成者は、ジョブが「良い動作」の制限時間に達したかどうかを追跡することを確実にする責任があります。通常、仕事にはいくらか期待される時間がかかります。

スケジューラ内のすべてのジョブを中断したい場合は、IInterruptableJobを実装し、メインジョブループが監視するフラグを設定する必要があります。

いつでもデザインを再考することができます。それは同じ義務を負うので同じ仕事を待つことは問題ではないはずです。ミスファイヤー命令を使用すると、インスタンス化されたミスファイア(長すぎるキューに入れられた)を破棄し、次のファイアウォール時間を待つことができます。

関連する問題