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

链内部和外部

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

apply-sequence

此属性指定是否应将 sequence number 和 size 标头添加到每条消息中。 此可选属性默认为 .falsespring-doc.cn

default-output-channel

如果设置,则此属性将提供对通道的引用,如果通道解析无法返回任何通道,则应将消息发送到该通道。 如果未提供默认 output channel,则 router 将引发异常。 如果要以静默方式删除这些消息,请将默认 output channel 属性值设置为 。nullChannelspring-doc.cn

从版本 6.0 开始,设置默认输出通道也会将选项重置为 。 因此,不会尝试从通道的名称解析通道,而是回退到这个默认输出通道 - 类似于 Java 语句。 如果设置为 explicly,则进一步的逻辑取决于选项: message to un-resolved channel from key can reach a only if if (从键到未解析的通道的消息) 才能到达 a 。 因此,提供且两者均设置为的配置被初始化阶段拒绝。channelKeyFallbackfalseswitchchannelKeyFallbacktrueresolutionRequireddefaultOutputChannelresolutionRequiredfalsedefaultOutputChannelchannelKeyFallbackresolutionRequiredtrueAbstractMappingMessageRouter
resolution-required

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

A Message is sent only to , if 指定了, when is 且未解析通道。default-output-channelresolution-requiredfalse
ignore-send-failures

如果设置为 ,则忽略发送到消息通道的失败。 如果设置为 ,则抛出 a,并且如果路由器解析多个通道,则任何后续通道都不会收到该消息。truefalseMessageDeliveryExceptionspring-doc.cn

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

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

此属性默认为 .falsespring-doc.cn

timeout

该属性指定在向目标 Message Channel 发送消息时等待的最长时间(以毫秒为单位)。timeoutspring-doc.cn

从版本 6.0 开始,设置默认输出通道也会将选项重置为 。 因此,不会尝试从通道的名称解析通道,而是回退到这个默认输出通道 - 类似于 Java 语句。 如果设置为 explicly,则进一步的逻辑取决于选项: message to un-resolved channel from key can reach a only if if (从键到未解析的通道的消息) 才能到达 a 。 因此,提供且两者均设置为的配置被初始化阶段拒绝。channelKeyFallbackfalseswitchchannelKeyFallbacktrueresolutionRequireddefaultOutputChannelresolutionRequiredfalsedefaultOutputChannelchannelKeyFallbackresolutionRequiredtrueAbstractMappingMessageRouter
A Message is sent only to , if 指定了, when is 且未解析通道。default-output-channelresolution-requiredfalse
虽然大多数路由器路由到单个通道,但它们可以返回多个通道名称。 例如,这正是这样做的。 如果在仅路由到单个通道的路由器上将此属性设置为,则任何引起的异常都会被吞噬,这通常没有什么意义。 在这种情况下,最好在流入口点捕获错误流中的异常。 因此,当路由器实现返回多个通道名称时,将属性设置为通常更有意义,因为失败的通道之后的其他通道仍将收到该消息。recipient-list-routertrueignore-send-failurestrue

顶层(链外)

以下参数仅对链之外的所有顶级路由器有效。spring-doc.cn

id

标识底层 Spring bean 定义,在路由器的情况下,它是 或 的实例,具体取决于路由器的实例分别是 a 还是 a 。 这是一个可选属性。EventDrivenConsumerPollingConsumerinput-channelSubscribableChannelPollableChannelspring-doc.cn

auto-startup

此 “lifecycle” 属性指示是否应在应用程序上下文启动期间启动此组件。 此可选属性默认为 .truespring-doc.cn

input-channel

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

order

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