Changes between 4.0 and 4.1
参见 Migration Guide以了解可能影响应用程序的重要更改。您可以在 wiki中找到从 2.1 版开始的所有版本的迁移指南。
New Components
版本 4.1 添加了许多新组件。
Promise<?> Gateway
消息网关方法现在支持 Reactor `Promise`返回类型。请参阅 Asynchronous Gateway。
WebSocket support
WebSocket`模块现已推出。它完全基于 Spring WebSocket 和 Spring Messaging 模块,并提供 `<inbound-channel-adapter>`和 `<outbound-channel-adapter>
。有关详细信息,请参阅 WebSockets Support。
Scatter-Gather Enterprise Integration Pattern
我们实施了分散收集企业集成模式。有关详细信息,请参阅 Scatter-Gather。
Routing Slip Pattern
我们添加了路由单据 EIP 模式实现。有关详细信息,请参见 Routing Slip。
Idempotent Receiver Pattern
通过在 XML 中添加 `<idempotent-receiver>`组件或为 Java 配置添加 `IdempotentReceiverInterceptor`和 `IdempotentReceiver`注释,我们添加了幂等接收方企业集成模式实现。有关详细信息,请参见 Idempotent Receiver Enterprise Integration Pattern和 Javadoc。
Boon JsonObjectMapper
我们为 JSON 转换器添加了 Boon JsonObjectMapper
。有关详细信息,请参见 Transformer。
Redis Queue Gateways
我们添加了 `<redis-queue-inbound-gateway>`和 `<redis-queue-outbound-gateway>`组件。请参阅 Redis Queue Inbound Gateway和 Redis Queue Outbound Gateway。
PollSkipAdvice
我们增加了 PollSkipAdvice
,您可以在 `<advice-chain>`的 `<poller>`内使用它来确定当前的轮询是否应通过使用 `PollSkipStrategy`实现的某些条件来抑制(跳过)。有关更多信息,请参阅 Poller。
General Changes
本节描述了从 4.0 版到 4.1 版的一般性更改。
AMQP Inbound Endpoints, Channel
现在使用消息侦听器容器(入站端点和通道)的元素支持 `missing-queues-fatal`属性。有关更多信息,请参见 AMQP Support。
AMQP Outbound Endpoints
AMQP 出站端点支持一个名为 lazy-connect
(默认: true
)的新属性。当 `true`时,与代理的连接在第一个消息到达之前不会建立(假设没有入站端点,它们始终会在启动期间尝试建立连接)。当设定 `false`时,会在应用程序启动期间尝试建立连接。请参阅 AMQP Support了解更多信息。
SimpleMessageStore
调用 `getMessageGroup()`时,`SimpleMessageStore`不再复制组。请参阅 [id="WARNING"]message-store.adoc#sms-caution了解更多信息。
Web Service Outbound Gateway: encode-uri
<ws:outbound-gateway/>
现在提供了一个 encode-uri
属性,允许在发送请求之前禁用 URI 对象的编码。
Http Inbound Channel Adapter and Status Code
现在可使用 `status-code-expression`配置 `<http:inbound-channel-adapter>`以覆盖默认 `200 OK`状态。有关更多信息,请参见 HTTP Namespace Support。
MQTT Adapter Changes
您现在可以配置 MQTT 通道适配器以连接到多台服务器 - 例如,支持高可用性 (HA)。有关详细信息,请参见 MQTT Support。
MQTT 消息驱动通道适配器现在支持为每个订阅指定 QoS 设置。有关更多信息,请参阅 Inbound (Message-driven) Channel Adapter。
MQTT 出站通道适配器现支持异步发送,避免阻塞,直至已确认传送。请参阅 Outbound Channel Adapter 了解更多信息。
现在可以在运行时以编程方式订阅和取消订阅主题。请参阅 Inbound (Message-driven) Channel Adapter 了解更多信息。
FTP and SFTP Adapter Changes
FTP 和 SFTP 出站通道适配器现在支持追加到远程文件以及在远程文件已存在时执行特定操作。远程文件模板现在也支持此功能,以及 rmdir()
和 exists()
。此外,远程文件模板提供对底层客户端对象的访问,从而可以访问低级 API。
有关更多信息,请参见FTP/FTPS Adapters和SFTP Adapters。
Splitter and Iterator
`Splitter`组件现在支持 `Iterator`作为用于生成输出消息的结果对象。有关更多信息,请参见 Splitter。
Aggregator
Aggregator
实例现在支持一个新属性 expire-groups-upon-timeout
。请参阅 Aggregator 了解更多信息。
Content Enricher Improvements
我们添加了一个 null-result-expression`属性,如果 `<enricher>`返回 `null
,则计算属性并返回属性。您可以在 `<header>`和 `<property>`中添加该属性。有关更多信息,请参见 Content Enricher。
我们添加了一个 `error-channel`属性,如果 `Exception`发生在 `request-channel`之后,则用作处理错误流。这允许您返回要用于填充的替换对象。有关更多信息,请参见 Content Enricher。
Header Channel Registry
<header-enricher/>
元素的 <header-channels-to-string/>
子元素现在可以覆盖头通道注册表默认保留通道映射的时间。请参阅 Header Channel Registry 了解更多信息。
Orderly Shutdown
我们改进了有序关闭算法。有关更多信息,请参见 Orderly Shutdown。
Management for RecipientListRouter
RecipientListRouter
现在提供一些管理操作,以在运行时配置接收者。这样一来,你现在可以在没有任何 <recipient>
的情况下配置 <recipient-list-router>
。请参阅 RecipientListRouterManagement
了解更多信息。
AbstractHeaderMapper: NON_STANDARD_HEADERS token
现已提供 AbstractHeaderMapper
实现,提供了额外的 NON_STANDARD_HEADERS
令牌来映射默认情况下未映射的任何用户定义标题。有关更多信息,请参见 AMQP Message Headers。
AMQP Channels: template-channel-transacted
针对 AMQP MessageChannel
实例,我们引入了 template-channel-transacted
属性。有关更多信息,请参见 AMQP-backed Message Channels。
Syslog Adapter
默认 syslog 消息转换器现在可以选择将原始消息保留在有效负载中,同时仍然设置头。请参阅 Syslog Inbound Channel Adapter 了解更多信息。
Asynchronous Gateway
除了 Promise
返回类型 mentioned earlier 之外,网关方法现在可以返回 Spring Framework 4.0 中引入的 ListenableFuture
。你还可以禁用网关中的异步处理,让下游流直接返回 Future
。请参阅 Asynchronous Gateway。
Aggregator Advice Chain
Aggregator
和 Resequencer
现在支持 <expire-advice-chain/>
和 <expire-transactional/>
子元素,以通知 forceComplete
操作。请参阅 Configuring an Aggregator with XML 了解更多信息。
Outbound Channel Adapter and Scripts
现已支持 <int:outbound-channel-adapter/>
支持 <script/>
子元素。基础脚本必须具有 void
返回类型,或返回 null
。请参见 Groovy support 和 Scripting Support。
Resequencer Changes
当重新排序器中的消息组超时(使用 group-timeout
或 MessageGroupStoreReaper
)时,默认情况下,迟到的消息现在会立即丢弃。请参见 Resequencer。
Optional POJO method parameter
Spring Integration 现一贯处理 Java 8 的 Optional
类型。请参阅 Configuring Service Activator。
QueueChannel
backed Queue type
QueueChannel
支持的 Queue type
已从 BlockingQueue
更改为更为通用的 Queue
。此更改允许使用任何外部 Queue
实现(例如 Reactor 的 PersistentQueue
)。请参阅 QueueChannel
Configuration。
ChannelInterceptor
Changes
ChannelInterceptor
现在支持附加的 afterSendCompletion()
方法和 afterReceiveCompletion()
方法。请参见 Channel Interceptors。
IMAP PEEK
从版本 4.1.1 开始,如果你将 mail.[protocol].peek
JavaMail 属性显式设置为 false
(其中 [protocol]
是 imap
或 imaps
),那么行为会发生改变。请参阅 IMAP PEEK[id="IMPORTANT"]。