ご存知のように、Spring バッチはバージョン 2.0 以降、チャンク指向の処理を使用しています。
アイテム ライターで例外が発生した場合、データ ソース トランザクション マネージャーはチャンク全体または関連アイテムのみをロールバックするということですか?
実際に試してみたところ、フレームワークがチャンク全体をロールバックすることがわかりました。最後のアイテムで例外がスローされたときに、正常に処理された 499 個のアイテムが 500 個のアイテムで構成されるチャンクにロールバックされることを望まないため、これは必要ありません。
私が見つけた唯一の解決策は、以下の属性をタスクレットに追加することです。ただし、これが正しいことかどうかはわかりません。
<batch:transaction-attributes propagation="NOT_SUPPORTED"/>
もう 1 つの意見は、単にチャンク サイズを 1 に減らすことでしたが、これもあまり意味がありません。
おそらく、Spring Batch は私の問題ドメインには適していません。もしそうなら、そのようなフレームワーク固有の動作にもう苦労しないように教えてください。
どんな提案でも大歓迎です。