2

データベースからレコードを取得し、各チャンクを個別のファイルに書き込む春のバッチでチャンク指向のステップを実装しようとしています。たとえば、DB に 500 のレコードがあるとします。それぞれ 50 個のレコードを持つ 10 個のファイルを作成する仕事が必要です。

PS: 主な目的は、出力ファイルを同時に作成することです。ItemWriter の実装はスレッド セーフではないため、ステップの完了にかかる合計時間を短縮できるように、出力として個別のファイルを作成することにしました。

Spring Batchで実装する方法を知っている人はいますか? パーティショニングを使用して複数のファイルを並行して処理するサンプル プロジェクトを見つけましたが、それはまさに私がやりたいことではありません。私の場合、入力は単一のテーブルですが、出力は複数のファイルです。

ここにリンクがあります:FileParallelProcessing

4

2 に答える 2

1

私は答えを見つけた、

春のバッチサンプルのpartitionJdbcJobは、まさに私が望むことを行います

Spring Batch のサンプル ジョブ ソースは、ここにあります。

于 2011-04-22T08:11:36.937 に答える
0

ファイルにチャンクを書き込む役割のサービスを作成することをお勧めします。このサービスは 1 つの入力、つまり単一のチャンクを受け取ります。そのロジックは、ファイルに書き込むことです。このサービスで書き込み用のマルチスレッドのものを作成します。

バッチはマルチスレッド方式でチャンクをこのサービスに送信します。

したがって、Spring Batch を介してマルチスレッド化の利点を得ることができ、チャンクをファイルに出力するサービスを自分で作成することにより、潜在的なバグを制御できます。

ItemWriterAdapterを使用して、書き込みをサービスに委任します。

于 2011-04-18T09:04:31.030 に答える