現在、正常に機能する Spring Integration フローがあります (図のリンクを参照)。現在の構成の上に Batch を追加して、指数関数的バックオフ、サーキット ブレーカー パターン、および再起動のためのデータベースへのジョブの永続化を使用して再試行できるようにしたいと考えています。
統合フローは、Message<MyObj> を受け取る Gateway で構成され、最終的に Message<MyObj> を Message<String> に変換する Transformer にルーティングされます。次に、アグリゲーターは Message<String> を受け取り、最終的に連結された Message<String> を解放します (サイズ解放戦略とタイムアウト付きの MessageGroupStoreReaper の両方を使用します)。連結された文字列は、SFTP outbound-channel-adapter を使用してアップロードされたファイルのペイロードです。
検索し、ドキュメントを読み、たくさんの例を見ましたが、プロセスの最後のステップをバッチ ジョブにカプセル化する方法がわかりません。アップロード中に SFTP 接続の問題やその他の例外がスローされた場合は、(ファイルのペイロードとして) 文字列のアップロードを再試行する機能が必要です。また、何らかの障害が発生した場合に (データベースでバックアップされた JobRepository を使用して) 再起動できるようにしたいので、再試行アドバイスを使用するだけでは不十分だと思います。
ピースをつなぎ合わせる方法と、どれを使用するか (ジョブ起動ゲートウェイ、MessageToJobRequest トランスフォーマー、ItemReader、ItemWriter??) を説明し、理解するのを手伝ってください。また、各 Message<String> にアクセスして、ジョブ、ステップ、またはタスクレット内の SFTP チャネルアダプターに送信する方法もわかりません。
現在の流れ: