5.4 和 5.5 之间的变化
文件聚合器
引入了基于 FileSplitter.FileMaker
的 CorrelationStrategy
、ReleaseStrategy
和 MessageGroupProcessor
实现,作为一个 FileAggregator
组件。
有关更多信息,请参阅 文件聚合器。
MQTT v5 支持
引入了 Mqttv5PahoMessageDrivenChannelAdapter
和 Mqttv5PahoMessageHandler
(包括相应的 MqttHeaderMapper
)以支持 MQTT v5 协议通信。
有关更多信息,请参阅 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
嵌套注解涵盖。
有关更多信息,请参阅 响应式流支持。
关联消息处理器(Aggregator
和 Resequencer
)的 groupTimeoutExpression
现在可以评估为 java.util.Date
,以用于某些细粒度调度用例。
此外,AbstractCorrelatingMessageHandler
中添加了 BiFunction groupConditionSupplier
选项,用于为要添加到组中的消息提供 MessageGroup
条件。
有关更多信息,请参阅 聚合器。
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
选项(包括 onErrorResume
函数)提供了 setter 方法。
有关更多信息,请参阅 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
导致文件的完整路径用作元数据存储键;这解决了当具有相同名称的文件在不同目录中多次出现时过滤器无法正常工作的问题。
IMPORTANT: 这意味着在持久元数据存储中,顶层目录下的文件将找不到现有键。
因此,该属性默认为 false
;这可能会在将来的版本中更改。
FileInboundChannelAdapterSpec
现在有一个方便的 recursive(boolean)
选项,而不是要求显式引用 RecursiveDirectoryScanner
。
remoteDirectoryExpression
现在可以方便地用于 mv
命令。
MongoDb 更改
MongoDbMessageSourceSpec
已添加到 MongoDd Java DSL 中。
update
选项现在在 MongoDbMessageSource
和 ReactiveMongoDbMessageSource
实现上都已公开。
有关更多信息,请参阅 MongoDb 支持。
WebSockets 更改
基于 ServerWebSocketContainer
的 WebSocket 通道适配器现在可以在运行时注册和删除。
有关更多信息,请参阅 WebSockets 支持。
JPA 更改
JpaOutboundGateway
现在支持 PersistMode.DELETE
的 Iterable
消息负载。
有关更多信息,请参阅 出站通道适配器。
网关更改
以前,在使用 XML 配置时,@Gateway.payloadExpression
对于无参数方法会被忽略。
存在一个可能的重大更改——如果方法同时用 @Payload
和 @Gateway
(带有不同的表达式)注解,以前会应用 @Payload
,现在会应用 @Gateway.payloadExpression
。
有关更多信息,请参阅 使用注解和 XML 的网关配置 和 调用无参数方法。