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

Spring integration Spring集成:是否可以让发送方等待任务执行器队列/线程空闲。,spring-integration,Spring Integration,是否可以让发送方等待任务执行器队列/线程空闲 任务执行者如下所示: <int:channel id="inputRequestChannel"> <int:dispatcher task-executor="validationWorkers"/> </int:channel> <task:executor id="validationWorkers" pool-size="5" queue-capacity="10" re

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

任务执行者如下所示:

<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

如何确保没有数据包丢失


哪种拒绝政策合适

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

你可以考虑使用<代码> 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 {

>如何确保没有数据包丢失?
这是不可能的;一旦它们进入执行者队列,如果服务器崩溃,它们就会丢失。您需要显示其余配置,以便有人就避免消息丢失提出建议。谢谢Artem Bilan。问题解决了。问题似乎是主应用程序正在退出,为了验证,在队列通道中的消息被消费并打印消息之前,我正在打印消息接收消息。很好。这是否意味着我们可以接受答案?