首页 > 解决方案 > RecipientListRouter 执行顺序

问题描述

我已经在我的程序中成功使用了 RecipientListRouter,根据我将它发送到多个通道的值。

我想知道 - 1. 这是否会保持执行顺序,比如在下面的情况下,我们收到一个将由 channelChkn 和 channelDeboard 处理的事件。因此,首先该事件将由 channelChkn 处理,然后是 channelDeboard

  1. 它是在不同的线程中执行还是在同一个发送者的线程中执行
        RecipientListRouter router = new RecipientListRouter();
        router.setIgnoreSendFailures(true);
        router.setApplySequence(true);
        router.addRecipient("channelChkn","headers.get('eventSubType').contains('CHKN')");
        router.addRecipient("channelBkd","headers.get('eventSubType').contains('BKD')");
        router.addRecipient("channelBrd","headers.get('eventSubType').contains('BRD')");
        router.addRecipient("channelDeboard","headers.get('isDeBoarded') == true");
        router.setDefaultOutputChannelName(IntegrationContextUtils.NULL_CHANNEL_BEAN_NAME);
        LOGGER.info("********************* RecipientListRouter *********************"+router.getRecipients());
        return router;

标签: spring-integrationspring-integration-dsl

解决方案


是的,它们将在调用线程上按顺序执行,只要所有接收者目标通道都是同步的(没有队列通道、没有执行器通道、没有配置有执行器的发布-订阅通道)。


推荐阅读