# 最新更新?
# 最新更新in Spring 积分 5.5?
如果你对更多细节感兴趣,请参阅作为 5.5 开发过程的一部分解决的问题跟踪票。
# 新组件
# 文件聚合器
引入了基于FileSplitter.FileMaker
的CorrelationStrategy
、ReleaseStrategy
和MessageGroupProcessor
作为FileAggregator
组件的实现。有关更多信息,请参见文件聚合器。
# MQTT v5 支持
Mqttv5PahoMessageDrivenChannelAdapter
和Mqttv5PahoMessageHandler
(包括相应的MqttHeaderMapper
)被引入以支持 MQTV5 协议通信。有关更多信息,请参见MQTT V5 支持。
# 一般变化
所有持久的MessageGroupStore
实现都提供了基于目标数据库流 API 的streamMessagesForGroup(Object groupId)
契约。有关更多信息,请参见消息存储。
现在,integrationGlobalProperties
Bean(如果声明)必须是org.springframework.integration.context.IntegrationProperties
的实例,而不是java.util.Properties
的实例,该支持已被禁止用于向后兼容。添加spring.integration.channels.error.requireSubscribers=true
全局属性是为了指示全局默认值errorChannel
必须配置requireSubscribers
选项(或不配置)。添加spring.integration.channels.error.ignoreFailures=true
全局属性是为了指示全局默认值errorChannel
必须忽略(或不忽略)调度错误并将消息传递给下一个处理程序。有关更多信息,请参见全局属性。
AbstractPollingEndpoint
(源轮询通道适配器和轮询消费者)将maxMessagesPerPoll == 0
视为跳过调用源。稍后可以将其更改为不同的值,例如通过控制总线。有关更多信息,请参见轮询消费者。
ConsumerEndpointFactoryBean
现在接受一个reactiveCustomizer``Function
到任何输入通道作为反应流源,并在下面使用一个ReactiveStreamsConsumer
。这在 Java DSL 中以ConsumerEndpointSpec.reactive()
选项的形式进行了介绍,并作为消息传递注释的@Reactive
嵌套注释进行了介绍。有关更多信息,请参见反应流支持。
对于一些细粒度的调度用例,现在可以将相关消息处理程序的groupTimeoutExpression
(anAggregator
和Resequencer
)计算为java.util.Date
。还将BiFunction groupConditionSupplier
选项添加到AbstractCorrelatingMessageHandler
中,以针对要添加到组中的消息提供MessageGroup
条件。有关更多信息,请参见Aggregator。
可以为MessageGroup
抽象提供一个condition
,以便稍后进行评估,从而为小组做出决策。有关更多信息,请参见消息组条件。
# 集成流组合
添加了新的IntegrationFlows.from(IntegrationFlow)
工厂方法,以允许从现有流的输出启动当前的IntegrationFlow
。此外,在IntegrationFlowDefinition
中增加了一个to(IntegrationFlow)
终端操作符,以继续当前在输入通道处的一些其它流。有关更多信息,请参见集成流组成。
# AMQP 变化
AmqpInboundChannelAdapter
和AmqpInboundGateway
(以及相应的 Java DSL 构建器)现在支持org.springframework.amqp.rabbit.retry.MessageRecoverer
作为通用目的RecoveryCallback
的 AMQP 特定替代方案。有关更多信息,请参见AMQP 支持。
# Redis 变更
ReactiveRedisStreamMessageProducer
现在为所有StreamReceiver.StreamReceiverOptionsBuilder
选项设置了 setter,包括一个onErrorResume
函数。有关更多信息,请参见Redis 支持。
# http 更改
HttpRequestExecutingMessageHandler
不再回退到application/x-java-serialized-object
内容类型,并让RestTemplate
根据提供的HttpMessageConverter
对请求体转换做出最终决定。它现在还具有一个extractResponseBody
标志(默认情况下是true
),以仅返回响应主体,或返回整个ResponseEntity
作为响应消息的有效负载,而不依赖于所提供的expectedResponseType
。对于WebFluxRequestExecutingMessageHandler
也提供了相同的选项。有关更多信息,请参见HTTP 支持。
# 文件/ftp/sftp 更改
持久文件列表过滤器现在有一个布尔属性forRecursion
。将此属性设置为true
,还将设置alwaysAcceptDirectories
,这意味着出站网关上的递归操作(ls
和mget
)现在每次都将遍历完整目录树。这是为了解决未检测到目录树中深层更改的问题。此外,forRecursion=true
会导致文件的完整路径被用作元数据存储键;这解决了一个问题,即如果同名文件在不同的目录中多次出现,则过滤器无法正常工作。重要提示:这意味着,对于顶层目录下的文件,将找不到持久性元数据存储中的现有密钥。由于这个原因,默认情况下,该属性是false
;这可能会在将来的版本中发生变化。
FileInboundChannelAdapterSpec
现在有了一个方便的recursive(boolean)
选项,而不是要求显式引用RecursiveDirectoryScanner
。
为了方便起见,现在可以在mv
命令中使用remoteDirectoryExpression
。
# MongoDB 变更
MongoDbMessageSourceSpec
被添加到 Mongodd Java DSL 中。现在在MongoDbMessageSource
和ReactiveMongoDbMessageSource
实现上都公开了update
选项。
有关更多信息,请参见MongoDB 支持。
# WebSockets 更改
基于ServerWebSocketContainer
的 WebSocket 通道适配器现在可以在运行时进行注册和删除。
有关更多信息,请参见WebSockets 支持。
# JPA 变化
JpaOutboundGateway
现在支持Iterable
消息有效负载PersistMode.DELETE
。
有关更多信息,请参见出站通道适配器。
# 网关更改
以前,在使用 XML 配置时,对于无参数方法,@Gateway.payloadExpression
会被忽略。有一个可能的中断更改-如果方法被注释为@Payload
以及@Gateway
(使用不同的表达式),以前将应用@Payload
,现在将应用@Gateway.payloadExpression
。有关更多信息,请参见带有注释和 XML 的网关配置和调用无参数方法。
← 前言 Spring 集成框架概述 →