在 spring-integration 5.5.18 中可以在 <int:poller> 中使用 <int:router> 吗?

问题描述 投票:0回答:1
java spring spring-boot spring-integration
1个回答
0
投票

根据当前的 XSD,

<poller>
必须声明为第一个子元素:

<xsd:complexType name="routerType">
    <xsd:complexContent>
        <xsd:extension base="commonRouterType">
            <xsd:sequence>
                <xsd:element ref="poller" minOccurs="0" maxOccurs="1"/>
                <xsd:group ref="routerCommonGroup"/>
            </xsd:sequence>
            <xsd:attributeGroup ref="topLevelRouterAttributeGroup"/>
        </xsd:extension>
    </xsd:complexContent>
</xsd:complexType>

因此你的配置应该是这样的:

<int:router id="channelRouter" input-channel="exceptionChannel"
        expression="@system.getId(payload)">
    <int:poller fixed-rate="10" task-executor="sysExecutor" />
    <int:mapping value="0" channel="exceptionChannel0" />
    <int:mapping value="1" channel="exceptionChannel1" />
</int:router>

注意:仅当您的

poller
exceptionChannel
时,
QueueChannel
才有效。

是的,如果您不在这里声明

<poller>
,但有一个默认的顶级:https://docs.spring.io/spring-integration/reference/endpoint.html,它仍然可以工作#全局默认轮询器

© www.soinside.com 2019 - 2024. All rights reserved.