<recipient-list>
カスタム アグリゲータを使用して複数の結果を結合するインバウンド HTTP エンドポイントにリクエストを送信しようとしています。カスタム アグリゲーターの結果を "待機" させるには、どうすれば受信 HTTP エンドポイントを取得できますか?
これが私のサンプルフローです。アグリゲーターは完璧に機能します。ただし、 は非同期であるため、インバウンドの http エンドポイントはすぐに返されます。私が本当にやりたいことは、Custom Aggregator からの結果を http エンドポイントへの応答として返すことです。シンプルなものが欠けているような気がします。
<flow name="AggregationExample">
<http:inbound-endpoint
exchange-pattern="request-response"
host="localhost"
port="8082"
path="test/aggregate"
/>
<recipient-list evaluator="groovy" expression="['vm://source1','vm://source2']"></recipient-list>
<!-- How do I wait for result of custom aggregator? -->
</flow>
<flow name="SourceAggregation">
<vm:inbound-endpoint path="sourceresult" />
<custom-aggregator failOnTimeout="true" class="com.example.MySourceAggregator"/>
<logger message="RESULTS: #[payload]"/>
</flow>
<flow name="Source1">
<vm:inbound-endpoint path="source1" />
<set-payload value="#[groovy:Thread.currentThread().getContextClassLoader().getResourceAsStream('example-source1.json').text]"/>
<vm:outbound-endpoint path="sourceresult" />
</flow>
<flow name="Source2">
<vm:inbound-endpoint path="source2" />
<set-payload value="#[groovy:Thread.currentThread().getContextClassLoader().getResourceAsStream('example-source2.json').text]"/>
<vm:outbound-endpoint path="sourceresult" />
</flow>