1

私は春の統合と春を通して実装している JMS に関して簡単な質問をしていますが、ある状況で立ち往生しています。私にアドバイスしてください。キューに 5000 のメッセージがあり、集約したいとしましょう。 20 メッセージのグループを転送します。これは、5000 メッセージから 20 メッセージを取得し、その 20 メッセージを転送する何らかの集約が必要であることを意味します。これを達成する方法を教えてください。

私もこのパターンを経験していました.. http://www.eaipatterns.com/Aggregator.html

4

2 に答える 2

1

Spring Integration リファレンス マニュアルのこのセクションでは、必要なすべての情報を提供する必要があります

基本的には、メッセージ グループのサイズが 20 に達したときに true を返す release-strategy が必要であり、すべてのメッセージが同じグループにあると単純に見なすcorrelation-strategy が必要です (グループ メンバーシップの他の指標がない場合)。

それが役立つことを願っています。-マーク

于 2013-03-15T12:06:08.610 に答える
0

同様の問題があり、各メッセージにatomicLongを使用してカウンターを作成することで解決しました。

次に、解放戦略は、そのカウンター ( message_id ヘッダーとして格納されている) に基づいて、X メッセージごとにメッセージを解放します。

    <int:aggregator ...
    release-strategy-expression="size() == ${max.size}"
     correlation-strategy-expression="new java.lang.Double(new java.lang.Double(headers.message_id) / ${max.size}).longValue()"
     />

そしてねえ、それは動作します。

于 2013-03-15T15:01:09.473 に答える