# 最新更新?

# 最新更新in Spring 积分 5.5?

如果你对更多细节感兴趣,请参阅作为 5.5 开发过程的一部分解决的问题跟踪票。

# 新组件

# 文件聚合器

引入了基于FileSplitter.FileMakerCorrelationStrategyReleaseStrategyMessageGroupProcessor作为FileAggregator组件的实现。有关更多信息,请参见文件聚合器

# MQTT v5 支持

Mqttv5PahoMessageDrivenChannelAdapterMqttv5PahoMessageHandler(包括相应的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(anAggregatorResequencer)计算为java.util.Date。还将BiFunction groupConditionSupplier选项添加到AbstractCorrelatingMessageHandler中,以针对要添加到组中的消息提供MessageGroup条件。有关更多信息,请参见Aggregator

可以为MessageGroup抽象提供一个condition,以便稍后进行评估,从而为小组做出决策。有关更多信息,请参见消息组条件

# 集成流组合

添加了新的IntegrationFlows.from(IntegrationFlow)工厂方法,以允许从现有流的输出启动当前的IntegrationFlow。此外,在IntegrationFlowDefinition中增加了一个to(IntegrationFlow)终端操作符,以继续当前在输入通道处的一些其它流。有关更多信息,请参见集成流组成

# AMQP 变化

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

FileInboundChannelAdapterSpec现在有了一个方便的recursive(boolean)选项,而不是要求显式引用RecursiveDirectoryScanner

为了方便起见,现在可以在mv命令中使用remoteDirectoryExpression

# MongoDB 变更

MongoDbMessageSourceSpec被添加到 Mongodd Java DSL 中。现在在MongoDbMessageSourceReactiveMongoDbMessageSource实现上都公开了update选项。

有关更多信息,请参见MongoDB 支持

# WebSockets 更改

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

有关更多信息,请参见WebSockets 支持

# JPA 变化

JpaOutboundGateway现在支持Iterable消息有效负载PersistMode.DELETE

有关更多信息,请参见出站通道适配器

# 网关更改

以前,在使用 XML 配置时,对于无参数方法,@Gateway.payloadExpression会被忽略。有一个可能的中断更改-如果方法被注释为@Payload以及@Gateway(使用不同的表达式),以前将应用@Payload,现在将应用@Gateway.payloadExpression。有关更多信息,请参见带有注释和 XML 的网关配置调用无参数方法