了解在Spring Integration中拆分器和聚合器之间或接收者列表路由器和聚合器之间是否存在异常的情况下,如何清理存储

时间:2019-03-08 06:54:02

标签: spring-integration

我是Spring集成的新手,我们创建了一个SI流程,其中有Splitter和Aggregator以及收件人列表路由器和Aggregator。 今天,在检查代码时,我对如果流之间存在异常的情况下,Aggregator将如何清理其存储感到困惑。 我担心在流程之间出现异常并在系统中创建陈旧状态对象的情况。 我已经检查过Spring集成文档,但没有运气(https://docs.spring.io/spring-integration/docs/2.0.0.RC1/reference/html/aggregator.html)。 我只能看到一个主题“在聚合器中管理状态:MessageGroupStore”,但这是针对“应用程序崩溃”的。

此外,我在google上也做了同样的事情,但我发现了一个线程https://dzone.com/articles/spring-integration-robust,但是却没有太多关注。当然,如果可以找到解决办法,我会回来的。

我正在使用OOB拆分器,收件人列表路由器和聚合器。考虑到模式应该具有机制来处理这种常见情况。

你能指导我吗

即:

<int:recipient-list-router input-channel="inputChannel" 
        default-output-channel="nullChannel">
        <int:recipient channel="aInputChannel" />
         <int:recipient channel="bInputChannel" />
</int:recipient-list-router>

<int:service-activator ref="aHandler"
        input-channel="aInputChannel" output-channel="aggregatorOutputChannel" />

<!-- we have exception in the bHandler -->
<int:service-activator ref="bHandler"
        input-channel="bInputChannel" output-channel="aggregatorOutputChannel" />


<int:aggregator input-channel="aggregatorOutputChannel"
        output-channel="outputChannel" />

OR

<int-file:splitter id="splitile"
        charset="UTF-8" apply-sequence="true" iterator="false"
        input-channel="inputChannel"
        output-channel="bTransformerChannel" />
<!-- consider we have exception at 4th chunk -->
<int:service-activator ref="transform"
        input-channel="bTransformerChannel" output-channel="aggregatorOutputChannel" />
<int:aggregator input-channel="aggregatorOutputChannel"
            output-channel="outputChannel" />

1 个答案:

答案 0 :(得分:0)

是;默认情况下,聚合器是“被动”组件-消息到达时将执行所有操作。

要使陈旧的组超时,可以使用收割机,或者使用最新版本的group-timeout