4.0 和 4.1 之间的变化

请参阅 迁移指南,了解可能影响您应用程序的重要更改。 您可以在 wiki 上找到所有版本的迁移指南,回溯到 2.1。

新组件

4.1 版本增加了一些新组件。

Promise<?> 网关

消息网关方法现在支持 Reactor Promise 返回类型。 请参阅 异步网关

WebSocket 支持

WebSocket 模块现已可用。 它完全基于 Spring WebSocket 和 Spring Messaging 模块,并提供了一个 <inbound-channel-adapter> 和一个 <outbound-channel-adapter>。 有关更多信息,请参阅 WebSockets 支持

Scatter-Gather 企业集成模式

我们实现了 scatter-gather 企业集成模式。 有关更多信息,请参阅 Scatter-Gather

路由单模式

我们添加了路由单 EIP 模式实现。 有关更多信息,请参阅 路由单

幂等接收器模式

我们通过在 XML 中添加 <idempotent-receiver> 组件或为 Java 配置添加 IdempotentReceiverInterceptorIdempotentReceiver 注解,实现了幂等接收器企业集成模式。 有关更多信息,请参阅 幂等接收器企业集成模式Javadoc

Boon JsonObjectMapper

我们为 JSON 转换器添加了 Boon JsonObjectMapper。 有关更多信息,请参阅 转换器

Redis 队列网关

我们添加了 <redis-queue-inbound-gateway><redis-queue-outbound-gateway> 组件。 请参阅 Redis 队列入站网关Redis 队列出站网关

PollSkipAdvice

我们添加了 PollSkipAdvice,您可以在 <poller><advice-chain> 中使用它,以根据您使用 PollSkipStrategy 实现的某些条件来确定是否应抑制(跳过)当前轮询。 有关更多信息,请参阅 轮询器

一般性变更

本节描述了从 4.0 版到 4.1 版的一般性更改。

AMQP 入站端点、通道

使用消息监听器容器(入站端点和通道)的元素现在支持 missing-queues-fatal 属性。 有关更多信息,请参阅 AMQP 支持

AMQP 出站端点

AMQP 出站端点支持一个名为 lazy-connect 的新属性(默认值:true)。 当为 true 时,在第一个消息到达之前(假设没有入站端点,它们总是在启动期间尝试建立连接),不会建立与代理的连接。 当设置为 false 时,在应用程序启动期间会尝试建立连接。 有关更多信息,请参阅 AMQP 支持

SimpleMessageStore

SimpleMessageStore 在调用 getMessageGroup() 时不再复制组。 有关更多信息,请参阅 message-store.adoc#sms-caution[id="WARNING"][id="WARNING"]

Web 服务出站网关:encode-uri

<ws:outbound-gateway/> 现在提供了一个 encode-uri 属性,允许在发送请求之前禁用 URI 对象的编码。

Http 入站通道适配器和状态码

<http:inbound-channel-adapter> 现在可以使用 status-code-expression 进行配置,以覆盖默认的 200 OK 状态。 有关更多信息,请参阅 HTTP 命名空间支持

MQTT 适配器更改

您现在可以配置 MQTT 通道适配器以连接到多个服务器——例如,支持高可用性 (HA)。 有关更多信息,请参阅 MQTT 支持

MQTT 消息驱动的通道适配器现在支持为每个订阅指定 QoS 设置。 有关更多信息,请参阅 入站(消息驱动)通道适配器

MQTT 出站通道适配器现在支持异步发送,避免阻塞直到确认交付。 有关更多信息,请参阅 出站通道适配器

现在可以在运行时以编程方式订阅和取消订阅主题。 有关更多信息,请参阅 入站(消息驱动)通道适配器

FTP 和 SFTP 适配器更改

FTP 和 SFTP 出站通道适配器现在支持追加到远程文件,并在远程文件已存在时采取特定操作。 远程文件模板现在也支持此功能,以及 rmdir()exists()。 此外,远程文件模板提供了对底层客户端对象的访问,从而可以访问低级 API。

有关更多信息,请参阅 FTP/FTPS 适配器SFTP 适配器

分割器和迭代器

Splitter 组件现在支持 Iterator 作为生成输出消息的结果对象。 有关更多信息,请参阅 分割器

聚合器

Aggregator 实例现在支持一个新属性 expire-groups-upon-timeout。 有关更多信息,请参阅 聚合器

内容丰富器改进

我们添加了一个 null-result-expression 属性,如果 <enricher> 返回 null,则会对其进行评估并返回。 您可以将其添加到 <header><property> 中。 有关更多信息,请参阅 内容丰富器

我们添加了一个 error-channel 属性,用于处理 request-channel 下游发生 Exception 时的错误流。 这允许您返回一个替代对象用于丰富。 有关更多信息,请参阅 内容丰富器

头部通道注册表

<header-enricher/> 元素的 <header-channels-to-string/> 子元素现在可以覆盖头部通道注册表保留通道映射的默认时间。 有关更多信息,请参阅 头部通道注册表

有序关闭

我们对有序关闭算法进行了改进。 有关更多信息,请参阅 有序关闭

RecipientListRouter 的管理

RecipientListRouter 现在提供了几个管理操作,用于在运行时配置接收者。 因此,您现在可以从一开始就配置 <recipient-list-router> 而无需任何 <recipient>。 有关更多信息,请参阅 RecipientListRouterManagement

AbstractHeaderMapper:NON_STANDARD_HEADERS 令牌

AbstractHeaderMapper 实现现在提供了额外的 NON_STANDARD_HEADERS 令牌,用于映射任何用户定义的、默认情况下未映射的头部。 有关更多信息,请参阅 AMQP 消息头部

AMQP 通道:template-channel-transacted

我们为 AMQP MessageChannel 实例引入了 template-channel-transacted 属性。 有关更多信息,请参阅 AMQP 支持的消息通道

Syslog 适配器

默认的 syslog 消息转换器现在有一个选项,可以在设置头部时保留原始消息在有效载荷中。 有关更多信息,请参阅 Syslog 入站通道适配器

异步网关

除了 x4.1-promise-gateway Promise 返回类型之外,网关方法现在可以返回 Spring Framework 4.0 中引入的 ListenableFuture。 您还可以禁用网关中的异步处理,让下游流直接返回 Future。 请参阅 异步网关

聚合器建议链

AggregatorResequencer 现在支持 <expire-advice-chain/><expire-transactional/> 子元素,以建议 forceComplete 操作。 有关更多信息,请参阅 使用 XML 配置聚合器

出站通道适配器和脚本

<int:outbound-channel-adapter/> 现在支持 <script/> 子元素。 底层脚本必须具有 void 返回类型或返回 null。 请参阅 Groovy 支持脚本支持

重排序器更改

当重排序器中的消息组超时(使用 group-timeoutMessageGroupStoreReaper)时,默认情况下,延迟到达的消息现在会立即被丢弃。 请参阅 重排序器

可选 POJO 方法参数

Spring Integration 现在始终如一地处理 Java 8 的 Optional 类型。 请参阅 配置服务激活器

QueueChannel 支持的队列类型

QueueChannel 支持的 Queue type 已从 BlockingQueue 更改为更通用的 Queue。 此更改允许使用任何外部 Queue 实现(例如,Reactor 的 PersistentQueue)。 请参阅 QueueChannel 配置

ChannelInterceptor 更改

ChannelInterceptor 现在支持额外的 afterSendCompletion()afterReceiveCompletion() 方法。 请参阅 通道拦截器

IMAP 窥视

自 4.1.1 版本以来,如果您显式将 mail.[protocol].peek JavaMail 属性设置为 false(其中 [protocol]imapimaps),则行为会发生变化。 请参阅 IMAP 窥视[id="IMPORTANT"][id="IMPORTANT"]