Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 任务执行器的固定延迟_Java_Multithreading_Spring Integration_Router_Splitter - Fatal编程技术网

Java 任务执行器的固定延迟

Java 任务执行器的固定延迟,java,multithreading,spring-integration,router,splitter,Java,Multithreading,Spring Integration,Router,Splitter,我的项目有一个-spring集成固定延迟轮询器(5分钟),它获取一堆记录-将其发送到拆分器,拆分器将记录拆分,并将它们发送到输出通道上池大小为2的taskexector路由器通道,并将每条记录发送给service activator进行进一步处理,并在聚合器上接收。Flow工作正常 但是,固定延迟是将前一个执行时间视为将记录交给任务执行者的时间,而不是在聚合器通道完成并接收所有记录处理时 如何让轮询器在所有记录处理完成后等待5分钟,而不是在拆分器通道上等待5分钟 配置: 使用SpringInte

我的项目有一个-spring集成固定延迟轮询器(5分钟),它获取一堆记录-将其发送到拆分器,拆分器将记录拆分,并将它们发送到输出通道上池大小为2的taskexector路由器通道,并将每条记录发送给service activator进行进一步处理,并在聚合器上接收。Flow工作正常

但是,固定延迟是将前一个执行时间视为将记录交给任务执行者的时间,而不是在聚合器通道完成并接收所有记录处理时

如何让轮询器在所有记录处理完成后等待5分钟,而不是在拆分器通道上等待5分钟

配置:

使用SpringIntegration2.2.0.RELEASE和Spring3.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>


---另外,对于发送到aggreter的以下服务请求的进一步配置,您必须挂起轮询器线程,直到所有异步下游操作完成


一种方法是在
中使用阻塞队列,轮询器线程在此等待来自下游处理的信号继续。然后触发器将从该点开始。

您必须挂起轮询器线程,直到所有异步下游操作完成

一种方法是在
中使用阻塞队列,轮询器线程在此等待来自下游处理的信号继续。然后触发器将从该点开始