此版本仍在开发中,尚不被认为是稳定的。对于最新的稳定版本,请使用 Spring Integration 6.5.1spring-doc.cadn.net.cn

常见路由器参数

本节介绍所有路由器参数的通用参数(在本章前面显示的两个表中勾选了所有框的参数)。spring-doc.cadn.net.cn

链条的内部和外部

以下参数对链内外的所有路由器都有效。spring-doc.cadn.net.cn

apply-sequence

此属性指定是否应将序列号和大小标头添加到每封邮件中。 此可选属性默认为false.spring-doc.cadn.net.cn

default-output-channel

如果设置,则此属性提供对通道的引用,如果通道解析未能返回任何通道,则应在其中发送消息。 如果未提供默认输出通道,路由器将抛出异常。 如果要以静默方式删除这些消息,请将默认输出通道属性值设置为nullChannel.spring-doc.cadn.net.cn

从 6.0 版开始,设置默认输出通道也会重置channelKeyFallback选项设置为false. 因此,不会尝试从其名称解析通道,而是回退到这个默认输出通道 - 类似于 Javaswitch陈述。 如果channelKeyFallback设置为true显式地,进一步的逻辑取决于resolutionRequired选项:从键到未解析通道的消息可以到达defaultOutputChannel仅当resolutionRequiredfalse. 因此,配置中defaultOutputChannel提供,并且channelKeyFallback & resolutionRequired设置为trueAbstractMappingMessageRouter初始化阶段。
resolution-required

此属性指定是否必须始终将通道名称成功解析为存在的通道实例。 如果设置为true一个MessagingException当通道无法解析时,会引发。 将此属性设置为false导致忽略任何不可解析的通道。 此可选属性默认为true.spring-doc.cadn.net.cn

消息仅发送到default-output-channel,如果指定,则resolution-requiredfalse并且通道未解析。
ignore-send-failures

如果设置为true,则忽略发送到消息通道的失败。 如果设置为false一个MessageDeliveryException,如果路由器解析多个通道,则任何后续通道都不会接收消息。spring-doc.cadn.net.cn

此属性的确切行为取决于Channel消息发送到的。 例如,当使用直接通道(单线程)时,发送失败可能是由下游组件抛出的异常引起的。 但是,当将消息发送到简单的队列通道(异步)时,抛出异常的可能性相当小。spring-doc.cadn.net.cn

虽然大多数路由器路由到单个通道,但它们可以返回多个通道名称。 这recipient-list-router例如,正是这样做的。 如果将此属性设置为true在仅路由到单个通道的路由器上,任何导致的异常都会被吞噬,这通常没有意义。 在这种情况下,最好在流入口点的错误流中捕获异常。 因此,将ignore-send-failures属性设置为true当路由器实现返回多个通道名称时,通常更有意义,因为失败通道后面的其他通道仍会收到消息。

此属性默认为false.spring-doc.cadn.net.cn

timeout

timeout属性指定将消息发送到目标消息通道时等待的最长时间(以毫秒为单位)。spring-doc.cadn.net.cn

顶层(链外)

以下参数仅在链外的所有顶级路由器上有效。spring-doc.cadn.net.cn

id

标识底层 Spring Bean 定义,对于路由器,它是EventDrivenConsumerPollingConsumer,具体取决于路由器的input-channel是一个SubscribableChannelPollableChannel分别。 这是一个可选属性。spring-doc.cadn.net.cn

auto-startup

此“生命周期”属性指示是否应在应用程序上下文启动期间启动此组件。 此可选属性默认为true.spring-doc.cadn.net.cn

input-channel

此端点的接收消息通道。spring-doc.cadn.net.cn

order

此属性定义此端点作为通道的订阅者连接到时的调用顺序。 当该通道使用故障转移调度策略时,这一点尤其重要。 当此端点本身是具有队列的通道的轮询使用者时,它不起作用。spring-doc.cadn.net.cn