0

一連の FTP Outbound Gatewaylsコマンドから発生したすべてのメッセージを処理した後、Spring Integration アプリケーションを停止する最良の方法は何でしょうか?

1 回限りの作業として、見つかったディレクトリごとに再帰的に FTP ディレクトリ構造をトラバースし、各ファイルをコピーして、処理のためにメッセージとして送信する必要があります。FTP ディレクトリ ツリーが完全に走査され、走査によって生成さたすべてのメッセージが処理されたら、アプリケーションを適切に停止したいと思います。

私の現在の考えでは、ゲートウェイとすべてのキューのアクティビティを追跡して追跡し、しばらくの間すべてのサイズが 0 になったら、アプリケーションを終了することができます。これは、各ディレクトリのすべてのファイルのカウントを保持するなどのことを行うことで、より洗練されたものにすることができます(これAbstractRemoteFileOutboundGatewayには .ディレクトリごとに処理されたメッセージの数であり、それらがすべて説明されたらシャットダウンを開始します。

それはかなりの量の作業のように思えます - 誰でも簡単な方法を知っていますか? Spring Integration を使用せずにアプリを作成し、手動で面倒なことを大量に行う (FTP ツリーの反復、ファイルのコピー)、または Spring Integration を使用するが、代わりに自分のユース ケースに合わせてその一部を拡張する必要があるという選択肢があります。 .

4

1 に答える 1

1

少し遠回しですが、以下の方法が考えられます。

.1. ftp アウトバウンド ゲートウェイをトリガーするにはメッセージを送信する必要があるため、すべてのメッセージをトリガーした後、ペイロードとして STOP を含むダミー メッセージを送信します。アウトバウンド ftp ゲートウェイが、メッセージを ftp ゲートウェイまたはステップ ポスト FTP ゲートウェイに選択的に送信するルーターを配置する直前に、一度に 1 つのメッセージのみを受け入れるチャネルを介して送信し、メッセージがシリアル化されるようにします。

.2. ファイル処理チャネルで STOP メッセージを受信したら、このメッセージを特定のキュー チャネル (停止キュー チャネルなど) に送信します。

.3. メイン プログラムでこの停止キュー チャネルへの参照を取得し、SI フローを開始したら、メッセージがキュー チャネルに来るのを待ちます。STOP メッセージがこのキュー チャネルに来ると、メイン メソッドは続行され、フローは停止します。この時点で。

于 2012-10-30T21:23:37.277 に答える