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