2016-05-13 8 views
1

私は、1つのディレクトリを入力ファイルとしてポーリングし、すべてのファイルを1つの共通ファイルに書き込むSpring統合アプリケーションを持っています。これは正常に動作します。さて、出力ファイルにヘッダーレコードとトレーラーレコードを追加する必要があります。私はSIを見てみましたが、Spring Integrationを使って出力ファイルの先頭と末尾にヘッダとトレーラレコードを挿入する方法はありませんでした。1000sファイルを1つにマージした後に出力ファイルにヘッダとトレーラレコードを追加する

SIは、このような機能をそのまま使用できますか?既に類似のシナリオを実装している人がいれば。 。 。助けてください!

答えて

0

このようなカスタムロジックをout of the boxに含める必要があるとは思っていませんでしたが、あなたのケースは非常に具体的なので、何かを自分で実装してコードを共有するようにしてはいけません。それは無知なことです。

どうにも私たちができることを見てみましょう。

ファイルのカウンターがいくつかあります。先頭には、最初のファイルを送信する前にもう1つメッセージを送信して、ターゲットファイルにヘッダーとして格納することができます。

<wire-tap>で達成することができます。これは、すべてがDirectChannelに基づいている場合、sendロジックの現在のスレッドをブロックします。

今では完全にpollingプロセスが無限大である...あなたは既にフッターを配置する時間であることをご理解のプロセスによってどのように(少なくともあなたの説明による)

明確ではない、とのファイルであれば常にソースディレクトリに表示されますが、仕上げを決めるフックはありません。

私はAbstractMessageSourceAdviceに見てみるために提案することができると我々はpollnull結果を持っているときtrailer recordを送信することができます。 SimpleActiveIdleMessageSourceAdviceのロジックのように:

public Message<?> afterReceive(Message<?> result, MessageSource<?> source) { 
    if (result == null) { 
     this.trigger.setPeriod(this.idlePollPeriod); 
    } 
    else { 
     this.trigger.setPeriod(this.activePollPeriod); 
    } 
    return result; 
} 

そういうもの。

あなたのユースケースに関する詳細情報を共有してください。あなたのアドバイスがまだあなたにとって役に立たない場合、その機能をいつ、どのように追加したいのですか?

関連する問題