3

ファイルは巨大/複数であり、タスクは非常に短いウィンドウで実行する必要があるため、Javaでマルチスレッドを使用して次のタスクを実行するコンポーネントを設計することになっています。

  1. 複数のcsv/xmlファイルを読み取り、すべてのデータをデータベースに保存します
  2. データベースを読み取り、txnタイプに従って個別のファイルcsvおよびxmlにデータを書き込みます。(各ファイルには、ライフファイルヘッダー、バッチヘッダー、バッチフッター、ファイルフッター、さまざまなトランザクション、およびチェックサムレコードのさまざまなタイプのレコードが含まれる場合があります)

上記のタスクにSpringBatchを使用するために、マルチスレッド化とSpringBatchの調査を行うのは非常に新しいです。

JavaまたはSpringBatchで従来のマルチスレッドを使用するための提案を教えてください。ここでは入力ソースが複数あり、出力ソースも複数あります。

4

2 に答える 2

4

スレッド部分全体を自分で作成するのではなく、フレームワークから何かを使用することをお勧めします。私は、Spingのタスクと、DBからのデータへの到達、処理の実行、電子メールの送信、データベースへのデータの書き込みを含むスケジュールされたタスクのスケジューリングを非常にうまく使用しました。

于 2012-06-28T21:22:37.047 に答える
2

Spring Batchは、要件を実装するのに理想的です。まず、組み込みのリーダーとライターを使用して実装を簡素化できます。CSVファイル、XMLファイルの解析、JDBCを介したデータベースからの読み取りなど、非常に優れたサポートがあります。失敗した場合の再試行などの機能も利用できます。無効な入力をスキップし、途中で何かが失敗した場合はジョブ全体を再開します-フレームワークはステータスを追跡し、中断したところから再開します。これらすべてを自分で実装することは非常に複雑であり、それをうまく行うには多くの努力が必要です。

Spring Batchを使用してバッチジョブを実装すると、並列化する簡単な方法が提供されます。1つのステップを複数のスレッドで実行できます。これは、ほとんどの場合、構成の変更です。実行するステップが複数ある場合は、それも構成できます。必要に応じて、処理を複数のマシンに分散することもサポートされています。並列処理を実現するための作業のほとんどは、SpringBatchによって行われます。

SpringBatchを使用して最も複雑なシナリオをいくつかプロトタイプ化することを強くお勧めします。それがうまくいけば、SpringBatchを進めることができます。特にマルチスレッドに慣れていないときに自分で実装することは、災害の確実なレシピです。

于 2012-06-29T05:24:47.487 に答える