我正在构建一个调用许多不同的Web服务的系统,我希望生成一个关于调用ws后返回的所有错误的报告。
为此,我使用<int:aggregator: >
来汇总来自error-channel
的邮件,但我无法知道release-strategy
,因为我想聚合错误频道的所有邮件。那么如何配置<int:aggregator >
来聚合所有消息。
<int:aggregator
correlation-strategy-expression="'${error.msg.correlation.key}'"
input-channel="ws.rsp.error.channel"
output-channel="outboundMailChannel"
ref="errorAggregator"
method="generateErrorReport"
release-strategy-expression="false"
group-timeout="2000"
到期的基团 - 在完成=&#34;真&#34; /&GT;
<int:service-activator
input-channel="outboundMailChannel"
ref="errorMsgAgregatedActivator"
method="handleMessage"
/>
激活者:
@ServiceActivator
public void handleMessage(Message<Collection<Object>> errorList) {
Collection<Object> payload=errorList.getPayload();
System.out.println("error list: "+payload.toString());
}
感谢。
答案 0 :(得分:0)
聚合要么需要适当的发布策略,要么只需使用release-strategy-expression="false"
(从不发布),并使用group-timeout
在一段时间后释放组中的任何内容。
您可能希望使用常量关联correlation-strategy-expresision="'foo'"
并设置expire-groups-upon-completion="true"
,以便新组以下一条消息开头。