質問

私は、さまざまな界面活性のさまざまなユーザーにさまざまなレポートを送信する責任がある小さなアプリケーションを作成しようとしています。 50または100のレポートが異なる人々に行くことについて話しているかもしれません。いくつかのレポートは毎日、毎週、そしていくつかは毎月生成する必要があります。

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

どういうわけか、各レポートが「Mon@12:00、Wed@12:00」または「Fri@09:30」などの特定の時間を設定することが可能だと考えています。次に、それに基づいて、スレッドはレポートを送信する時期かどうかを判断します。

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

役に立ちましたか?

解決

各レポートに個別のQuartzタスクインスタンスを登録して、Quartzがすべてのスケジューリングを処理できるようにしてみませんか?それはその背後にあるすべてのポイントの後です。

他のヒント

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

1つのジョブが完了するのに時間がかかりすぎて、ジョブの蓄積を開始すると問題を引き起こします。

ジョブスケジュールのデータ構造は、その記録をタイムスタンプでソートし続けます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top