Spring Batchを使用して作成されたレガシーアプリケーションを維持しており、データが失われないように調整する必要があります。さまざまなWebサービス(ステップごとに1つ)から読み取り、リモートデータベースに書き込む必要があります。Webサービスから読み取ったすべてのitenが破棄され(同じアイテムを2回読み取ることができない)、書き込みができないためにデータが失われるため、DBとの接続が切断されると状況が悪化します。
次回ステップの実行時に書き込み操作を再試行するために、1つのステップで既に読み取られたデータを保持するようにSpringBatchをセットアップする必要があります。書き込み操作が正常に終了するまで、同じステップでそれ以上のデータを読み取ることはできません。書き込みができない場合、ステップは読み取りデータを保持し、実行を次のステップに渡す必要があります。しばらくすると、失敗したステップを再度実行する時間になると、別のアイテムを読み取らず、代わりに失敗した書き込み操作を再試行します。 。
バッチアプリケーションは無限ループで実行する必要があり、各ステップは1つの異なるソースからデータを収集する必要があります。失敗した書き込み操作は、他のステップを遅らせないように一時的にスキップする(読み取りデータを保持する)必要がありますが、次に呼び出されたときに書き込み操作から再開する必要があります。
私は公式ドキュメント以外のさまざまなWebソースを調査していますが、SpringBatchは私が出会った中で最も直感的なドキュメントではありません。
これは達成できますか?はいの場合、どのように?