概述
路由器是许多消息架构中的关键元素。它们从消息通道消费消息,并根据一组条件将每条消费的消息转发到一个或多个不同的消息通道。
Spring Integration 提供了以下路由器:
路由器实现共享许多配置参数。但是,不同路由器之间存在某些差异。此外,配置参数的可用性取决于路由器是在链内部使用还是在链外部使用。为了提供快速概览,所有可用属性都列在以下两个表中。
下表显示了链外部路由器可用的配置参数:
属性 | 路由器 | 消息头值路由器 | xpath 路由器 | 负载类型路由器 | 接收者列表路由器 | 异常类型路由器 |
---|---|---|---|---|---|---|
apply-sequence |
image::tickmark.png[] |
image::tickmark.png[] |
image::tickmark.png[] |
image::tickmark.png[] |
image::tickmark.png[] |
image::tickmark.png[] |
default-output-channel |
image::tickmark.png[] |
image::tickmark.png[] |
image::tickmark.png[] |
image::tickmark.png[] |
image::tickmark.png[] |
image::tickmark.png[] |
resolution-required |
image::tickmark.png[] |
image::tickmark.png[] |
image::tickmark.png[] |
image::tickmark.png[] |
image::tickmark.png[] |
image::tickmark.png[] |
ignore-send-failures |
image::tickmark.png[] |
image::tickmark.png[] |
image::tickmark.png[] |
image::tickmark.png[] |
image::tickmark.png[] |
image::tickmark.png[] |
timeout |
image::tickmark.png[] |
image::tickmark.png[] |
image::tickmark.png[] |
image::tickmark.png[] |
image::tickmark.png[] |
image::tickmark.png[] |
id |
image::tickmark.png[] |
image::tickmark.png[] |
image::tickmark.png[] |
image::tickmark.png[] |
image::tickmark.png[] |
image::tickmark.png[] |
auto-startup |
image::tickmark.png[] |
image::tickmark.png[] |
image::tickmark.png[] |
image::tickmark.png[] |
image::tickmark.png[] |
image::tickmark.png[] |
input-channel |
image::tickmark.png[] |
image::tickmark.png[] |
image::tickmark.png[] |
image::tickmark.png[] |
image::tickmark.png[] |
image::tickmark.png[] |
order |
image::tickmark.png[] |
image::tickmark.png[] |
image::tickmark.png[] |
image::tickmark.png[] |
image::tickmark.png[] |
image::tickmark.png[] |
method |
image::tickmark.png[] |
|||||
ref |
image::tickmark.png[] |
|||||
expression |
image::tickmark.png[] |
|||||
header-name |
image::tickmark.png[] |
|||||
evaluate-as-string |
image::tickmark.png[] |
|||||
xpath-expression-ref |
image::tickmark.png[] |
|||||
converter |
image::tickmark.png[] |
下表显示了链内部路由器可用的配置参数:
属性 | 路由器 | 消息头值路由器 | xpath 路由器 | 负载类型路由器 | 接收者列表路由器 | 异常类型路由器 |
---|---|---|---|---|---|---|
apply-sequence |
image::tickmark.png[] |
image::tickmark.png[] |
image::tickmark.png[] |
image::tickmark.png[] |
image::tickmark.png[] |
image::tickmark.png[] |
default-output-channel |
image::tickmark.png[] |
image::tickmark.png[] |
image::tickmark.png[] |
image::tickmark.png[] |
image::tickmark.png[] |
image::tickmark.png[] |
resolution-required |
image::tickmark.png[] |
image::tickmark.png[] |
image::tickmark.png[] |
image::tickmark.png[] |
image::tickmark.png[] |
image::tickmark.png[] |
ignore-send-failures |
image::tickmark.png[] |
image::tickmark.png[] |
image::tickmark.png[] |
image::tickmark.png[] |
image::tickmark.png[] |
image::tickmark.png[] |
timeout |
image::tickmark.png[] |
image::tickmark.png[] |
image::tickmark.png[] |
image::tickmark.png[] |
image::tickmark.png[] |
image::tickmark.png[] |
id |
||||||
auto-startup |
||||||
input-channel |
||||||
order |
||||||
method |
image::tickmark.png[] |
|||||
ref |
image::tickmark.png[] |
|||||
expression |
image::tickmark.png[] |
|||||
header-name |
image::tickmark.png[] |
|||||
evaluate-as-string |
image::tickmark.png[] |
|||||
xpath-expression-ref |
image::tickmark.png[] |
|||||
converter |
image::tickmark.png[] |
从 Spring Integration 2.1 开始,路由器参数在所有路由器实现中都更加标准化。因此,一些微小的更改可能会破坏基于旧版本 Spring Integration 的应用程序。自 Spring Integration 2.1 起,ignore-channel-name-resolution-failures
属性已被移除,取而代之的是将其行为与 resolution-required
属性合并。此外,resolution-required
属性现在默认为 true
。在这些更改之前,resolution-required
属性默认为 false
,导致在未解析任何通道且未设置 default-output-channel
时消息被静默丢弃。新行为要求至少解析一个通道,并且默认情况下,如果未确定任何通道(或发送尝试不成功),则会抛出 MessageDeliveryException
。如果您确实希望静默丢弃消息,可以将 default-output-channel="nullChannel"
。