4

Excel/PDf形式でレポートを生成するJavaWebアプリケーションを作成するための最良のソリューションを探しています。Google AdWordsに似た機能で、ユーザーはスケジュールレポートを作成し、後でレポートを生成するときにダウンロードできます。

ユーザーがログに記録し、事前定義されたレポートを選択し、入力パラメーター(レポートの日付など)を提供するJavaアプリケーションを開発することを考えています。この要求はキューに入れられるか、Quarts Job(永続キューを優先)として保存されます。ジョブはキュー/ジョブを監視してジョブを実行し、レポート(出力Excel / pdf)を生成してディスクに保存します。ユーザーが画面を更新したり、後でログに戻ったりしたときに、レポートをダウンロードできるようにする必要があります。

SpringバッチとQuartzスケジューラーを使用してこれを行うことはできますか?また、Spring adminのように、キュー内のリクエストの数(キューに入れられたジョブ)を確認し、キュー処理などを停止できることを期待しています。

4

1 に答える 1

4

すべてのレポート リクエストを同時に処理したい場合は、おそらく、サーバーがリアルタイムのユーザー リクエストの処理で占有されていない夜間 (または遅い時間帯の日中) に、spring-batch を使用します。

数秒/分/時間などごとに新しいジョブをチェックし、その指定された時間間隔でそれらの 1 つ/多くを処理する場合は、クォーツ ジョブを使用します。

したがって、クォーツはスケジューラーであり、バッチはプロセスです。Quartz を使用して、バッチ ジョブを特定の時間に実行するようにスケジュールできます。それらは競合するテクノロジーではなく、補完的なものです。

あなたの質問について: キューとその永続性について話していることを考えると、問題が単純な jms モデルに当てはまるように思えます。メッセージング ソフトウェアが必要です。簡単にしたい場合は、基本的な Java EE JMS API のラッパーとしてspring-jmsを使用することをお勧めします。Spring ラッパーは、基本的な jms より単純です。メッセージング サービスの場合、私はRabbitMQを検討します。これも非常に単純だからです。

jms アーキテクチャを使用すると、ユーザー リクエストをキューにポストし、キューを永続化するように構成します。キューにカスタム リスナーを配置し、レポート ジェネレーターが実行されるたびに要求を渡します。1 つ以上のスレッドをリスナーに割り当てることができます。つまり、レポート ジェネレーターのパフォーマンスを簡単に調整できるはずです。

spring-integration (物事を相互に接続するのに役立つ事前構築済みのパターン実装のセット) を介して rabbitmq を使用することについて、非常に役立つDZone の記事があります。

于 2013-06-08T02:36:27.177 に答える