4.0 和 4.1 之间的更改
新组件
版本 4.1 添加了许多新组件。
Promise<> 网关
消息网关方法现在支持 Reactor Promise
返回类型。见异步网关。
WebSocket 支持
WebSocket
模块现已可用。它完全基于 Spring WebSocket 和 Spring Messaging 模块,并提供了一个 <inbound-channel-adapter>
和一个 <outbound-channel-adapter>
。更多信息,请参阅 WebSockets 支持。
分散-聚集 企业集成模式
我们实现了散集企业集成模式。详见 Scatter-Gather 获取更多信息。
路由 slip 模式
我们添加了路由 slip EIP 模式的实现。更多信息请参阅 Routing Slip。
等幂接收者模式
我们通过在 XML 中添加 <idempotent-receiver>
组件或在 Java 配置中添加 IdempotentReceiverInterceptor
和 IdempotentReceiver
注解来实现幂等接收器企业集成模式。详见 幂等接收器企业集成模式 和 Javadoc 以获取更多信息。
Boon JsonObjectMapper
Boon JSON 对象映射器
我们添加了 Boon JsonObjectMapper
用于 JSON 转换器。更多信息请参见 Transformer。
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()
时不再复制组。参见 xref:message-store.adoc#sms-caution
欲了解更多信息。
Web Service 外向网关: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
作为结果对象来生成输出消息。更多信息请参见 Splitter。
聚合器
Aggregator
实例现在支持一个新属性 expire-groups-upon-timeout
。更多信息请参阅 Aggregator。
内容丰富器改进
我们添加了一个 null-result-expression
属性,当 <enricher>
返回 null
时,会评估并返回该属性。你可以在 <header>
和 <property>
中添加它。更多信息请参见 内容充实。
我们添加了一个 error-channel
属性,用于在 request-channel
的下游发生 Exception
时处理错误流。这使您可以返回一个替代对象以用于丰富。更多信息,请参见 内容丰富器。
头部通道注册表
<header-enricher/>
元素的 <header-channels-to-string/>
子元素现在可以覆盖头通道注册表保留通道映射的默认时间。有关更多信息,请参阅 Header Channel Registry。
有序关机
我们改进了有序关闭算法。更多信息请参见 有序关闭。
RecipientListRouter
的管理
RecipientListRouter
现在提供了多个管理操作,可以在运行时配置接收者。通过这些操作,你现在可以从一开始就配置 <recipient-list-router>
而无需添加任何 <recipient>
。更多信息,请参见 RecipientListRouterManagement。
AbstractHeaderMapper: NON_STANDARD_HEADERS 标记
AbstractHeaderMapper
实现现在提供了额外的 NON_STANDARD_HEADERS
标记来映射任何用户定义的标头,这些标头默认情况下不会被映射。有关更多信息,请参阅 AMQP 消息标头。
AMQP 通道:template-channel-transacted
在这一部分中,我们讨论了 AMQP 通道的 template-channel-transacted
特性。请注意,专有名词如 AMQP 保持原样。
我们为 AMQP MessageChannel
实例引入了 template-channel-transacted
属性。更多信息请参见 AMQP 支持的消息通道。
Syslog 适配器
默认的 syslog 消息转换器现在有一个选项,可以在设置头信息的同时保留有效负载中的原始消息。更多信息,请参见 Syslog 入站通道适配器。
异步网关
聚合器建议链
Aggregator
和 Resequencer
现在支持 <expire-advice-chain/>
和 <expire-transactional/>
子元素来建议 forceComplete
操作。更多信息,请参见 使用 XML 配置 Aggregator。
外发通道适配器和脚本
重新排序器更改
当重新排序器中的消息组超时(使用 group-timeout
或 MessageGroupStoreReaper
),迟到的消息现在默认情况下会立即被丢弃。请参阅 重新排序器。
可选的POJO方法参数
Spring Integration 现在一致地处理 Java 8 的 Optional
类型。参见 配置服务激活器。
由 QueueChannel
支持的队列类型
QueueChannel
支持的 Queue type
已从 BlockingQueue
更改为更通用的 Queue
。此更改允许使用任何外部 Queue
实现(例如,Reactor 的 PersistentQueue
)。请参阅 QueueChannel 配置。
ChannelInterceptor
更改
ChannelInterceptor
现在支持额外的 afterSendCompletion()
和 afterReceiveCompletion()
方法。详见 Channel Interceptors。
IMAP PEEK
在 IMAP 协议中,PEEK
用于查看邮件内容而不将其标记为已读。
自从 4.1.1 版本起,如果你明确地将 mail.[protocol].peek
JavaMail 属性设置为 false
(其中 [protocol]
是 imap
或 imaps
),行为上会有变化。请参阅 xref:changes-4.0-4.1.adoc#x4.1-mail-peek
.