2011-09-09 19 views
0

私はさまざまなユーザーにさまざまなレポートを送信する小さなアプリケーションを作成しようとしています。私たちは、50人か100人の異なる報告が違う人に伝わることを話しているかもしれません。一部のレポートは、毎日、毎週、毎月、毎月生成される必要があります。与えられたスケジュールに従ってタスクを実行する方法

私は定期的にタスクを実行するために先にQuartzライブラリを使用してきました。しかし、物事をシンプルに保つために、私は単一のQuartzスレッドですべてのレポートを処理するという考えが好きです。つまり、スレッドはすべてのレポート、たとえば15分ごとにループし、1つ以上のレポートが生成され送信されるタイミングを判断する必要があります。 12:00または12:15にレポートを生成するかどうかは関係ありません。

"mon @ 12:00、wed @ 12:00"や "fri @ 09:30"などの特定の時間帯を設定することは可能でしょうか。それに基づいて、スレッドはレポートを送信するかどうかを判断します。

私の質問は、他の誰かがこれのようなことをしていますが、このタスクを簡単に実装できるライブラリがありますか?

答えて

1

レポートごとに個別のクォーツタスクインスタンスを登録し、Quartzにすべてのスケジューリングを処理させるのはなぜですか?それはそれの背後にあるすべてのポイントの後です。

+0

おそらくうまく動作しますが、「オンザフライで」Quartzジョブを「再スケーリング」することは可能でしょうか?これで、管理者がスケジュールを設定できるようにするコントロールパネルがあることを意味しています。そのため、ジョブを再スケジュールすることは可能でしょうか? – sbrattla

+0

私が覚えている限り、はい、API経由でトリガー時間を更新できます。 – mcfinnigan

1

スレッドを1つしか作成せず、ある時間間隔で「ジョブスケジュールデータ構造」にpingを実行してレポートを実行する必要があるかどうかを確認します。はいの場合はレポートを実行し、そうでない場合は指定されたスリープ時間後に短い昼寝とpingに戻ります。

1つのジョブが完了するのに時間がかかり、ジョブの蓄積を開始すると問題が発生します。

ジョブスケジュールデータ構造は、そのレコードをタイムスタンプでソートしたままにします。

関連する問題