Changes between 5.4 and 5.5

New Components

File Aggregator

引入了基于 FileSplitter.FileMakerCorrelationStrategyReleaseStrategyMessageGroupProcessor 的实现,作为 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

AmqpInboundChannelAdapterAmqpInboundGateway(以及相应的 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,这意味着出站网关(lsmget)上的递归操作现在将始终在每次遍历完整目录树。这是为了解决目录树中深处更改未被检测到的问题。此外,forRecursion=true 会导致使用文件的完整路径作为元数据存储键;这解决了在不同目录中多次出现具有相同名称的文件时过滤器无法正常工作的问题。重要提示:这意味着无法在顶级目录下的文件找到持久元数据存储中的现有键。因此,该属性默认为 false;这可能会在未来版本中更改。

FileInboundChannelAdapterSpec 现在有一个便捷的 recursive(boolean) 选项,而不是要求明确引用 RecursiveDirectoryScanner

现在可以在 mv 命令中使用 remoteDirectoryExpression 以便于使用。

MongoDb Changes

MongoDbMessageSourceSpec 已添加到 MongoDd Java DSL,现在 MongoDbMessageSourceReactiveMongoDbMessageSource 实现中公开了 update 选项。

有关详细信息,请参阅 MongoDb Support

WebSockets Changes

现在可以在运行时注册和移除基于 ServerWebSocketContainer 的 WebSocket 通道适配器。

有关详细信息,请参阅 WebSockets Support

JPA Changes

JpaOutboundGateway 现在支持 PersistMode.DELETEIterable 消息有效负载。

有关详细信息,请参阅 Outbound Channel Adapter

Gateway Changes

以前,在使用XML配置时,对无参数的方法忽略`@Gateway.payloadExpression`。一种可能的重大更改是,如果方法注释了`@Payload`以及`@Gateway`(具有不同的表达式),那么以前将使用`@Payload`,现在使用`@Gateway.payloadExpression`。更多信息,请参见Gateway Configuration with Annotations and XMLInvoking No-Argument Methods