Changes between 5.4 and 5.5
File Aggregator
引入了基于 FileSplitter.FileMaker
的 CorrelationStrategy
、ReleaseStrategy
和 MessageGroupProcessor
的实现,作为 FileAggregator
组件。有关详细信息,请参阅 File Aggregator。
MQTT v5 Support
Mqttv5PahoMessageDrivenChannelAdapter`和`Mqttv5PahoMessageHandler
(包括各自的`MqttHeaderMapper`)引入旨在支持MQTT v5协议通信,更多信息,请参见MQTT v5 Support。
General Changes
所有持久 MessageGroupStore
实现在基于目标数据库流式 API 的情况下提供了 streamMessagesForGroup(Object groupId)
合约。有关详细信息,请参阅 Message Store。
integrationGlobalProperties
bean (如果已声明)现在必须是 org.springframework.integration.context.IntegrationProperties
的实例,而不是 java.util.Properties
,该支持已弃用,以保持向后兼容性。已添加 spring.integration.channels.error.requireSubscribers=true
全局属性以指示必须使用 requireSubscribers
选项(或不使用)配置全局默认 errorChannel
。已添加 spring.integration.channels.error.ignoreFailures=true
全局属性以指示全局默认 errorChannel
必须忽略(或不忽略)调度错误并传递消息到下一个处理程序。有关详细信息,请参阅 Global Properties。
AbstractPollingEndpoint
(源数据轮询信道适配器和轮训使用者)将`maxMessagesPerPoll == 0`视为跳过呼叫源数据。稍后可以将其更改为不同值,例如,通过控制总线。更多信息,请参见Polling Consumer。
ConsumerEndpointFactoryBean
现在接受 reactiveCustomizer
Function
作为响应流源的任何输入通道,并在其下面使用 ReactiveStreamsConsumer
。这作为 Java DSL 中的 ConsumerEndpointSpec.reactive()
选项以及消息传递注释的 @Reactive
嵌套注释得到涵盖。有关详细信息,请参阅 Reactive Streams Support。
现在可以将相关消息处理程序(Aggregator`和`Resequencer
)的`groupTimeoutExpression`评估为`java.util.Date`,以用于一些细粒度的调度用例。另外,在`AbstractCorrelatingMessageHandler`中添加了`BiFunction groupConditionSupplier`选项,以针对需要添加到组中的消息提供`MessageGroup`条件。更多信息,请参见Aggregator。
可以向`MessageGroup`抽象提供一个`condition`,以稍后进行评估并为该组做出决策。更多信息,请参见Message Group Condition。
Integration Flows Composition
已添加新的 IntegrationFlows.from(IntegrationFlow)
工厂方法,以允许从现有流程的输出启动当前 IntegrationFlow
。此外,IntegrationFlowDefinition
已添加 to(IntegrationFlow)
终端运算符,以在其他流程的输入通道上继续当前流程。有关详细信息,请参阅 Integration Flows Composition。
AMQP Changes
AmqpInboundChannelAdapter
和 AmqpInboundGateway
(以及相应的 Java DSL 构建器)现在支持 org.springframework.amqp.rabbit.retry.MessageRecoverer
作为通用 RecoveryCallback
的 AMQP 特定替代方案。有关详细信息,请参阅 AMQP Support。
Redis Changes
ReactiveRedisStreamMessageProducer
现在为所有 StreamReceiver.StreamReceiverOptionsBuilder
选项设置了设置器,包括 onErrorResume
函数。有关详细信息,请参阅 Redis Support。
HTTP Changes
HttpRequestExecutingMessageHandler
不再返回 application/x-java-serialized-object
内容类型,并让 RestTemplate
基于所提供的 HttpMessageConverter
为请求正文转换做出最终决策。现在它还具有 extractResponseBody
标志(默认情况下为 true
),以仅返回响应正文,或将整个 ResponseEntity
作为回复消息有效负载返回,而与所提供的 expectedResponseType
无关。WebFluxRequestExecutingMessageHandler
也提供了相同的选项。有关详细信息,请参阅 HTTP Support。
File/FTP/SFTP Changes
持久的过滤文件列表现在有一个布尔属性 forRecursion
。将此属性设置为 true
,还将设置 alwaysAcceptDirectories
,这意味着出站网关(ls
和 mget
)上的递归操作现在将始终在每次遍历完整目录树。这是为了解决目录树中深处更改未被检测到的问题。此外,forRecursion=true
会导致使用文件的完整路径作为元数据存储键;这解决了在不同目录中多次出现具有相同名称的文件时过滤器无法正常工作的问题。重要提示:这意味着无法在顶级目录下的文件找到持久元数据存储中的现有键。因此,该属性默认为 false
;这可能会在未来版本中更改。
FileInboundChannelAdapterSpec
现在有一个便捷的 recursive(boolean)
选项,而不是要求明确引用 RecursiveDirectoryScanner
。
现在可以在 mv
命令中使用 remoteDirectoryExpression
以便于使用。
MongoDb Changes
MongoDbMessageSourceSpec
已添加到 MongoDd Java DSL,现在 MongoDbMessageSource
和 ReactiveMongoDbMessageSource
实现中公开了 update
选项。
有关详细信息,请参阅 MongoDb Support。
WebSockets Changes
现在可以在运行时注册和移除基于 ServerWebSocketContainer
的 WebSocket 通道适配器。
有关详细信息,请参阅 WebSockets Support。
JPA Changes
JpaOutboundGateway
现在支持 PersistMode.DELETE
的 Iterable
消息有效负载。
有关详细信息,请参阅 Outbound Channel Adapter。
Gateway Changes
以前,在使用XML配置时,对无参数的方法忽略`@Gateway.payloadExpression`。一种可能的重大更改是,如果方法注释了`@Payload`以及`@Gateway`(具有不同的表达式),那么以前将使用`@Payload`,现在使用`@Gateway.payloadExpression`。更多信息,请参见Gateway Configuration with Annotations and XML和Invoking No-Argument Methods。