1

ファイルを読み取って各行を分割し、最初の列に基づいて行をグループ化する必要があります。最初の列の値が変更されたら、前のグループを解放する必要があります。これは Spring 統合 DSL で実行できますか?

ファイルは次のように表示され、並べ替えられます。

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

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

4

1 に答える 1

0

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                                

                })
            )
于 2017-09-18T21:20:24.317 に答える