0

さまざまなレポートをさまざまな間隔でさまざまなユーザーに送信する小さなアプリケーションを作成しようとしています。50 または 100 の異なるレポートがさまざまな人に送信されることについて話している可能性があります。毎日、毎週、毎月生成する必要があるレポートがあります。

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

どうにかレポートごとに「mon@12:00,wed@12:00」や「fri@09:30」など特定の時間を設定できないかと考えています。次に、それに基づいて、スレッドはレポートを送信する時間であるかどうかを判断します。

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

4

2 に答える 2

1

レポートごとに個別のクォーツタスクインスタンスを登録し、Quartzにすべてのスケジュールを処理させてみませんか?それが結局のところその背後にあるポイントです。

于 2011-09-09T10:25:13.527 に答える
1

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

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

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

于 2011-09-09T10:59:36.213 に答える