0

Web サービスで非常に長時間実行するプロセスを実行する必要があるという問題があり、結果を処理する良い方法を探しています。シナリオ: ユーザーは、UI を介してこのような長時間実行プロセスを実行します。ここで、彼は自分の要求が受け入れられ、しばらくしてから戻る必要があるというメッセージを受け取ります。したがって、彼のリクエストのステータスなどを表示する必要はありません。長時間実行されているプロセスの結果を適切に処理する方法を探しています。プロセスは外部プログラムであるため、アプリケーション サーバーはそれらを認識しません。したがって、これらのプログラムが終了するのを待つ必要があります。もちろん、これに EJB を使用したくはありません。結果が得られない間、EJB がブロックされるからです。代わりに、JMS または Spring Batch を使用することを考えました。

4

2 に答える 2

0

同様の設計要件があり、ユーザーは XML ファイルを送信しており、それらからドキュメントを生成する必要がありました。この場合、JMS を使用すると、ジョブを並行して消費および実行できるこれらのプロセスの新しいインスタンスをいつでも追加できるため、有利です。

タイマー タスクを使用して、ステータスを確認したり、これらのプロセスを監視したりできます。また、プロセスが完了したら、メッセージを JMS キューにパブリッシュできます。

于 2012-10-19T12:07:01.133 に答える
0

それは、外部プログラムが利用できる通信の形式に大きく依存します。JMS は非常に優れたアプローチであり、アプリケーション サーバーですぐに利用できますが、外部プログラムが実行時間の長い DB クエリであり、結果をテキスト ファイルにダンプする場合、最適なオプションではない可能性があります...

JMS を非同期通信チャネルとして「単に」使用することに対する Spring Batch の主な利点は、インフラストラクチャが失敗したジョブを再試行したり、ジョブをグループ化したりできるトランザクション プロパティです。特定のセットアップについて詳しく知らなければ、詳細なアドバイスを提供することは困難です。

乾杯、

于 2012-10-19T10:17:20.747 に答える