4.0 和 4.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 配置添加 IdempotentReceiverInterceptor
和 IdempotentReceiver
注解,实现了幂等接收器企业集成模式。
有关更多信息,请参阅 幂等接收器企业集成模式 和 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"]。
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
。
请参阅 异步网关。
聚合器建议链
Aggregator
和 Resequencer
现在支持 <expire-advice-chain/>
和 <expire-transactional/>
子元素,以建议 forceComplete
操作。
有关更多信息,请参阅 使用 XML 配置聚合器。
重排序器更改
当重排序器中的消息组超时(使用 group-timeout
或 MessageGroupStoreReaper
)时,默认情况下,延迟到达的消息现在会立即被丢弃。
请参阅 重排序器。
可选 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]
是 imap
或 imaps
),则行为会发生变化。
请参阅 IMAP 窥视[id="IMPORTANT"][id="IMPORTANT"]。