# 最新更新?

## 最新更新in Spring 积分 5.5？

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

### 新组件

#### 文件聚合器

引入了基于`FileSplitter.FileMaker`的`CorrelationStrategy`、`ReleaseStrategy`和`MessageGroupProcessor`作为`FileAggregator`组件的实现。有关更多信息，请参见[文件聚合器](./file.html#file-aggregator)。

#### MQTT v5 支持

`Mqttv5PahoMessageDrivenChannelAdapter`和`Mqttv5PahoMessageHandler`（包括相应的`MqttHeaderMapper`）被引入以支持 MQTV5 协议通信。有关更多信息，请参见[MQTT V5 支持](./mqtt.html#mqtt-v5)。

### 一般变化

所有持久的`MessageGroupStore`实现都提供了基于目标数据库流 API 的`streamMessagesForGroup(Object groupId)`契约。有关更多信息，请参见[消息存储](./message-store.html#message-store)。

现在，`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`必须忽略（或不忽略）调度错误并将消息传递给下一个处理程序。有关更多信息，请参见[全局属性](./configuration.html#global-properties)。

`AbstractPollingEndpoint`（源轮询通道适配器和轮询消费者）将`maxMessagesPerPoll == 0`视为跳过调用源。稍后可以将其更改为不同的值，例如通过控制总线。有关更多信息，请参见[轮询消费者](./endpoint.html#endpoint-pollingconsumer)。

`ConsumerEndpointFactoryBean`现在接受一个`reactiveCustomizer``Function`到任何输入通道作为反应流源，并在下面使用一个`ReactiveStreamsConsumer`。这在 Java DSL 中以`ConsumerEndpointSpec.reactive()`选项的形式进行了介绍，并作为消息传递注释的`@Reactive`嵌套注释进行了介绍。有关更多信息，请参见[反应流支持](./reactive-streams.html#reactive-streams)。

对于一些细粒度的调度用例，现在可以将相关消息处理程序的`groupTimeoutExpression`（an`Aggregator`和`Resequencer`）计算为`java.util.Date`。还将`BiFunction groupConditionSupplier`选项添加到`AbstractCorrelatingMessageHandler`中，以针对要添加到组中的消息提供`MessageGroup`条件。有关更多信息，请参见[Aggregator](./aggregator.html#aggregator)。

可以为`MessageGroup`抽象提供一个`condition`，以便稍后进行评估，从而为小组做出决策。有关更多信息，请参见[消息组条件](./message-store.html#message-group-condition)。

#### 集成流组合

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

#### AMQP 变化

`AmqpInboundChannelAdapter`和`AmqpInboundGateway`（以及相应的 Java DSL 构建器）现在支持`org.springframework.amqp.rabbit.retry.MessageRecoverer`作为通用目的`RecoveryCallback`的 AMQP 特定替代方案。有关更多信息，请参见[AMQP 支持](./amqp.html#amqp)。

#### Redis 变更

`ReactiveRedisStreamMessageProducer`现在为所有`StreamReceiver.StreamReceiverOptionsBuilder`选项设置了 setter，包括一个`onErrorResume`函数。有关更多信息，请参见[Redis 支持](./redis.html#redis)。

#### http 更改

`HttpRequestExecutingMessageHandler`不再回退到`application/x-java-serialized-object`内容类型，并让`RestTemplate`根据提供的`HttpMessageConverter`对请求体转换做出最终决定。它现在还具有一个`extractResponseBody`标志（默认情况下是`true`），以仅返回响应主体，或返回整个`ResponseEntity`作为响应消息的有效负载，而不依赖于所提供的`expectedResponseType`。对于`WebFluxRequestExecutingMessageHandler`也提供了相同的选项。有关更多信息，请参见[HTTP 支持](./http.html#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 支持](./mongodb.html#mongodb)。

#### WebSockets 更改

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

有关更多信息，请参见[WebSockets 支持](./web-sockets.html#web-sockets)。

####  JPA 变化

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

有关更多信息，请参见[出站通道适配器](./jpa.html#jpa-outbound-channel-adapter)。

#### 网关更改

以前，在使用 XML 配置时，对于无参数方法，`@Gateway.payloadExpression`会被忽略。有一个可能的中断更改-如果方法被注释为`@Payload`以及`@Gateway`（使用不同的表达式），以前将应用`@Payload`，现在将应用`@Gateway.payloadExpression`。有关更多信息，请参见[带有注释和 XML 的网关配置](./gateway.html#gateway-configuration-annotations)和[调用无参数方法](./gateway.html#gateway-calling-no-argument-methods)。
