此版本仍在开发中,尚不被认为是稳定的。对于最新的稳定版本,请使用 Spring Integration 6.5.1! |
常见路由器参数
本节介绍所有路由器参数的通用参数(在本章前面显示的两个表中勾选了所有框的参数)。
链条的内部和外部
以下参数对链内外的所有路由器都有效。
apply-sequence
-
此属性指定是否应将序列号和大小标头添加到每封邮件中。 此可选属性默认为
false
. default-output-channel
-
如果设置,则此属性提供对通道的引用,如果通道解析未能返回任何通道,则应在其中发送消息。 如果未提供默认输出通道,路由器将抛出异常。 如果要以静默方式删除这些消息,请将默认输出通道属性值设置为
nullChannel
.从 6.0 版开始,设置默认输出通道也会重置 channelKeyFallback
选项设置为false
. 因此,不会尝试从其名称解析通道,而是回退到这个默认输出通道 - 类似于 Javaswitch
陈述。 如果channelKeyFallback
设置为true
显式地,进一步的逻辑取决于resolutionRequired
选项:从键到未解析通道的消息可以到达defaultOutputChannel
仅当resolutionRequired
是false
. 因此,配置中defaultOutputChannel
提供,并且channelKeyFallback
&resolutionRequired
设置为true
被AbstractMappingMessageRouter
初始化阶段。 resolution-required
-
此属性指定是否必须始终将通道名称成功解析为存在的通道实例。 如果设置为
true
一个MessagingException
当通道无法解析时,会引发。 将此属性设置为false
导致忽略任何不可解析的通道。 此可选属性默认为true
.消息仅发送到 default-output-channel
,如果指定,则resolution-required
是false
并且通道未解析。 ignore-send-failures
-
如果设置为
true
,则忽略发送到消息通道的失败。 如果设置为false
一个MessageDeliveryException
,如果路由器解析多个通道,则任何后续通道都不会接收消息。此属性的确切行为取决于
Channel
消息发送到的。 例如,当使用直接通道(单线程)时,发送失败可能是由下游组件抛出的异常引起的。 但是,当将消息发送到简单的队列通道(异步)时,抛出异常的可能性相当小。虽然大多数路由器路由到单个通道,但它们可以返回多个通道名称。 这 recipient-list-router
例如,正是这样做的。 如果将此属性设置为true
在仅路由到单个通道的路由器上,任何导致的异常都会被吞噬,这通常没有意义。 在这种情况下,最好在流入口点的错误流中捕获异常。 因此,将ignore-send-failures
属性设置为true
当路由器实现返回多个通道名称时,通常更有意义,因为失败通道后面的其他通道仍会收到消息。此属性默认为
false
. timeout
-
这
timeout
属性指定将消息发送到目标消息通道时等待的最长时间(以毫秒为单位)。
顶层(链外)
以下参数仅在链外的所有顶级路由器上有效。
id
-
标识底层 Spring Bean 定义,对于路由器,它是
EventDrivenConsumer
或PollingConsumer
,具体取决于路由器的input-channel
是一个SubscribableChannel
或PollableChannel
分别。 这是一个可选属性。 auto-startup
-
此“生命周期”属性指示是否应在应用程序上下文启动期间启动此组件。 此可选属性默认为
true
. input-channel
-
此端点的接收消息通道。
order
-
此属性定义此端点作为通道的订阅者连接到时的调用顺序。 当该通道使用故障转移调度策略时,这一点尤其重要。 当此端点本身是具有队列的通道的轮询使用者时,它不起作用。