1

Springバッチを使用して大きなファイルをダウンロードして処理しています。シナリオは非常に単純です。

1. Download the file via http
2. process it(validations,transformations)
3. send it into queue
  • 入力ファイルのデータを保存する必要はありません。
  • (同じシナリオの) 複数のジョブ インスタンスが同時に実行される場合があります。

この状況に対処するためのベストプラクティスを探しています。

タスクレットを作成してファイルをローカルにダウンロードし、通常の手順で処理を開始する必要がありますか?
その場合、いくつかの一時ファイルに関する懸念を考慮する必要があります(必ず削除する、他の一時ファイル名を上書きしないようにするなど)。

一方、ダウンロードしてメモリ内に保持することもできますが、多くのジョブインスタンスを実行するとすぐにメモリ不足になるのではないかと心配しています。

このシナリオをどのように釘付けにすることをお勧めしますか?? タスクレットを使用する必要がありますか?

ありがとうございました。

4

2 に答える 2

3

ファイルが大きい場合は、特に理由がない限り、ディスクに保存することをお勧めします。ファイルをディスクに保存することで、エラーが発生した場合にファイルを再ダウンロードすることなく、ジョブを再開できます。

vs Spring Integrationに関してはTasklet、FTP 機能が既に利用可能であるため、通常、このタイプの機能には Spring Integration をお勧めします。そうは言っても、Spring XD はTaskletfor FTP 機能を使用するため、そのアプローチを取ることも珍しくありません。

Spring Batch と Spring Integration の統合に関する優れたビデオは、Gunnar Hillert と私が SpringOne2GX で行った講演です。ビデオ全体は、https: //www.youtube.com/watch?v=8tiqeV07XlIでご覧いただけます。Spring Batch の前に Spring Batch Integration for FTP を使用することについて説明しているセクションは、約 29:37 にあります。

于 2015-01-02T16:48:23.330 に答える
1

以下の例は、あなたの問題に対する古典的な解決策だと思います http://docs.spring.io/spring-batch/trunk/reference/html/springBatchIntegration.html#launching-batch-jobs-through-messages

于 2015-01-02T02:34:33.327 に答える