是否可以让发送方等到任务执行程序队列/线程空闲。
任务执行者如下:
<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的数据包。
如何确保无数据包丢失?
哪种拒绝政策适合?
答案 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 {