Spring集成:是否可以让发送方等待任务执行程序队列/线程空闲。

时间:2018-06-15 13:55:40

标签: spring-integration

是否可以让发送方等到任务执行程序队列/线程空闲。

任务执行者如下:

<int:channel id="inputRequestChannel">
        <int:dispatcher task-executor="validationWorkers"/>
   </int:channel>
   <task:executor id="validationWorkers" pool-size="5" queue-capacity="10"  rejection-policy="CALLER_RUNS"/>

使用上面的配置会丢失一些发送到inputRequestChannel的数据包。

如何确保无数据包丢失?

哪种拒绝政策适合?

1 个答案:

答案 0 :(得分:0)

你是否愿意分享一些测试用例来重现并真正理解数据包丢失。不确定“包”本身是什么......

您可以考虑使用CallerBlocksPolicy代替:

/**
 * A {@link RejectedExecutionHandler} that blocks the caller until
 * the executor has room in its queue, or a timeout occurs (in which
 * case a {@link RejectedExecutionException} is thrown.
 *
 * @author Gary Russell
 * @since 3.0.3
 *
 */
public class CallerBlocksPolicy implements RejectedExecutionHandler {