gpt4 book ai didi

java - 修复了任务执行器的延迟

转载 作者:太空宇宙 更新时间:2023-11-04 13:47:38 25 4
gpt4 key购买 nike

我的项目有一个 spring 集成固定延迟轮询器(5 分钟),它获取一堆记录 - 将其发送到分割器,分割器分割记录并将它们发送到输出 channel 处池大小为 2 的任务执行器路由器 channel ,并发送每个记录以在服务激活器处进一步处理并在聚合器处接收。流程运行良好。

但是,固定延迟将先前的执行时间视为将记录传递给任务执行器的时间,而不是所有记录处理完成并在聚合器 channel 接收的时间。

如何让轮询器在所有记录处理完成后等待 5 分钟,而不是在分离器 channel 移交后等待 5 分钟?

配置:

使用 spring 集成 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>

--- 还可以进一步配置发送到聚合器的以下服务请求

最佳答案

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

一种方法是在<service-activator/>内使用阻塞队列。轮询器线程等待来自下游处理的信号以继续。然后触发器将从该点开始。

关于java - 修复了任务执行器的延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30671113/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com