我的proejct有一个-spring集成固定延迟轮询器(5分钟),它获得一堆记录 - 将它发送到拆分器,拆分器拆分记录并将它们发送到taskexector路由器通道,输出通道的池大小为2并发送每条记录以便在服务激活器处进一步处理并在聚合器处接收。流程正常。
但是,固定延迟将前一个执行时间视为将记录交给任务执行者的位置,而不是在聚合器通道完成和接收所有记录处理时。
如何让轮询器在完成所有记录处理后等待5分钟,而不是等待分割器通道切换5分钟?
配置:
使用spring integration 2.2.0.RELEASE和spring 3.1.1.RELEASE版本
<integration:channel id="splitterChannel"/>
<integration:channel id="serviceRequestChannel"/>
<integration:channel id="aggregatorChannel"/>
<task:executor id="taskExecutor" pool-size="2"/>
<integration:channel id="routerChannel" >
<integration:dispatcher task-executor="taskExecutor"/>
</integration:channel>
<integration:inbound-channel-adapter
id="inboundAdapter"
method="retrieveReadyRecords"
channel="splitterChannel"
ref="inboundChannelAdapter" auto-startup="true">
<integration:poller
trigger="batchtrigger"/>
</integration:inbound-channel-adapter>
<integration:splitter
input-channel="splitterChannel"
expression="payload"
output-channel="routerChannel"/>
<integration:recipient-list-router input-channel="routerChannel">
<integration:recipient channel="aggregatorChannel" selector-expression="xxx"/>
<integration:recipient channel="serviceRequestChannel" selector-expression="zzzz"/>
</integration:recipient-list-router>
---还为发送到aggretor的以下服务请求进一步配置
答案 0 :(得分:0)
您必须暂停轮询器线程,直到完成所有异步下游操作。
一种方法是<service-activator/>
内的阻塞队列,其中轮询器线程等待来自下游处理的信号继续。然后触发器将从那一点开始。