次の問題があります。各行で1つ以上のアイテムがデータベースに書き込まれるファイルがあります。書き込む必要のあるアイテムの数を見つけるために、別のシステムからルックアップを実行する必要があります。1行から得られる各アイテムは、アイテムプロセッサのチェーンを使用して変換し、最終的にDB内の複数のテーブルに書き込む必要があります。
各アイテムは複数のテーブルに書き込む必要があるため、それぞれが独自のトランザクションに含まれている必要があります。このため、私はItemProcessor<Foo, List<Bar>>
それを処理するだけを持つことはできません。その場合、たとえacommit-interval
が1であっても、同じトランザクションで複数のアイテムが発生することになります。
私はすでにこのスタックオーバーフローの質問を見てきました。トランザクションの問題のため、受け入れられた回答は役に立ちません。Spring Integrationスプリッターの使用に関するもう1つの答えは、興味をそそられるように思えます。しかし、それは多くの詳細を提供しません。リーダーの出力をチャネル入力として定義するにはどうすればよいですか?アイテムライターに送信される出力チャネルをどのように定義しますか?新しく分割された各アイテムでアイテムプロセッサチェーンを実行するにはどうすればよいですか?
SpringBatchジョブ内でスプリッターを使用した例を見つけることができませんでした。任意の推奨事項をいただければ幸いです。