1

ファイルを読み込み、最初の列の値が変更されたときに、最初の列に基づいて各行とグループ行を分割する必要があります。 Spring統合DSLでこれを行うことはできますか?ここ 次のメッセージの内容に基づくSpringインテグレーションアグリゲータ

はどのようにファイルの外観のようであり、それはソートです:

x 1 
x 2 
x 3 
y 4 
y 5 
y 6 

アウトプットは、このdoesnのので、X = 1、2、3、Y = 4、5、6 を持つ2つのメッセージでなければなりませんメッセージをグループ化する必要がある場合、他の関係はありません。一致しない次のレコードにヒットするとすぐにメッセージをグループ化できますか?この場合、私が行番号4で「y」を押すと、前の「x」メッセージをグループ化して解放しますか?カスタムアグリゲータを使用することは可能ですか?

答えて

0

最も簡単な解決策は、分割して1つのスレッドでまとめてすばやく集計する限り、groupTimeout()に依存することです。したがって、すべてのレコードは処理され、グループに配信されます。しかし、私たちはそれらを解放する方法を知らないので、予定されたタイムアウトに依存します。したがって、アグリゲータの設定は次のようになります。

.aggregate(a -> a 
      .correlationExpression("payload.column1") 
      .releaseStrategy(g -> false) 
      .groupTimeout(1000) 
      .sendPartialResultOnExpiry(true) 
      .outputProcessor(g -> { 
       Collection<Message<?>> messages = g.getMessages(); 

       // iterate and build your output payload         

       }) 
      ) 
+0

回答ありがとうございます。私はそれを試してみましょう。 –

+0

平均的には、ファイルを読み取るためにポーラーを使用する方法はありますか?統合フローの代わりに、カスタムメソッドを使用して1行ずつ読み込んでグループ化し、メッセージとして出力しますか? –

+0

はい、ファイル解析のカスタムメソッドを呼び出す '.handle()'を使って行うことができます –

関連する問題