Spring集成:一种聚合器,可以在处理所有消息时释放

时间:2015-10-22 16:06:54

标签: spring-integration

我正在构建一个调用许多不同的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());
}

感谢。

1 个答案:

答案 0 :(得分:0)

聚合要么需要适当的发布策略,要么只需使用release-strategy-expression="false"(从不发布),并使​​用group-timeout在一段时间后释放组中的任何内容。

您可能希望使用常量关联correlation-strategy-expresision="'foo'"并设置expire-groups-upon-completion="true",以便新组以下一条消息开头。