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