概述

路由器是许多消息架构中的关键元素。它们从消息通道消费消息,并根据一组条件将每条消费的消息转发到一个或多个不同的消息通道。

Spring Integration 提供了以下路由器:

路由器实现共享许多配置参数。但是,不同路由器之间存在某些差异。此外,配置参数的可用性取决于路由器是在链内部使用还是在链外部使用。为了提供快速概览,所有可用属性都列在以下两个表中。

下表显示了链外部路由器可用的配置参数:

Table 1. 链外部的路由器
属性 路由器 消息头值路由器 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[]

下表显示了链内部路由器可用的配置参数:

Table 2. 链内部的路由器
属性 路由器 消息头值路由器 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"