路由器通用参数
本节介绍所有路由器参数通用的参数(本章前面所示的两个表格中所有方框都打勾的参数)。
链内和链外
以下参数对链内和链外的所有路由器均有效。
apply-sequence
-
此属性指定是否应向每条消息添加序列号和大小标头。 此可选属性默认为
false
。 default-output-channel
-
如果设置,此属性提供对消息在通道解析失败未能返回任何通道时应发送到的通道的引用。 如果未提供默认输出通道,路由器将抛出异常。 如果您想默默地丢弃这些消息,请将默认输出通道属性值设置为
nullChannel
。从版本 6.0 开始,设置默认输出通道还会将
channelKeyFallback
选项重置为false
。 因此,将不会尝试从其名称解析通道,而是回退到此默认输出通道 - 类似于 Javaswitch
语句。 如果channelKeyFallback
显式设置为true
,则后续逻辑取决于resolutionRequired
选项:来自键的未解析通道的消息只有在resolutionRequired
为false
时才能到达defaultOutputChannel
。 因此,AbstractMappingMessageRouter
初始化阶段会拒绝将defaultOutputChannel
提供并且channelKeyFallback
和resolutionRequired
都设置为true
的配置。 resolution-required
-
此属性指定通道名称是否必须始终成功解析为存在的通道实例。 如果设置为
true
,当通道无法解析时将引发MessagingException
。 将此属性设置为false
会导致任何无法解析的通道被忽略。 此可选属性默认为true
。仅当
resolution-required
为false
且通道未解析时,消息才发送到default-output-channel
(如果已指定)。 ignore-send-failures
-
如果设置为
true
,则忽略发送到消息通道的失败。 如果设置为false
,则会抛出MessageDeliveryException
,并且,如果路由器解析多个通道,则任何后续通道都不会收到消息。此属性的确切行为取决于消息发送到的
Channel
类型。 例如,当使用直接通道(单线程)时,发送失败可能由更下游的组件抛出的异常引起。 然而,当将消息发送到简单队列通道(异步)时,抛出异常的可能性非常小。
虽然大多数路由器路由到一个通道,但它们可以返回多个通道名称。
例如, |
此属性默认为 false
。
timeout
-
timeout
属性指定将消息发送到目标消息通道时等待的最大毫秒数。
顶层(链外)
以下参数仅对链外的所有顶层路由器有效。
id
-
标识底层的 Spring bean 定义,在路由器的情况下,它是
EventDrivenConsumer
或PollingConsumer
的实例,具体取决于路由器的input-channel
是SubscribableChannel
还是PollableChannel
。 这是一个可选属性。 auto-startup
-
此“
lifecycle
”属性指示此组件是否应在应用程序上下文启动期间启动。 此可选属性默认为true
。 input-channel
-
此端点的接收消息通道。
order
-
当此端点作为订阅者连接到通道时,此属性定义调用的顺序。 当该通道使用故障转移分派策略时,这尤其相关。 当此端点本身是带有队列的通道的轮询消费者时,它没有效果。