|
如需使用最新稳定版本,请使用 Spring Integration 7.0.4! |
5.4 与 5.5 版本之间的变更
文件聚合器
作为 FileAggregator 组件引入的 CorrelationStrategy、ReleaseStrategy 和 MessageGroupProcessor 的从 FileSplitter.FileMaker 开始的实现。
有关更多信息,请参阅 文件聚合器。
MQTT v5 支持
Mqttv5PahoMessageDrivenChannelAdapter 和 Mqttv5PahoMessageHandler(包括各自的 MqttHeaderMapper)被引入以支持 MQTT v5 协议通信。
有关更多信息,请参阅 MQTT v5 支持。
常规变更
所有持久的 MessageGroupStore 实现都基于目标数据库的流式 API 提供 streamMessagesForGroup(Object groupId) 契约。
有关更多信息,请参阅 消息存储。
The 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 视为跳过调用源。
该值稍后可更改为其他值,例如通过控制总线(Control Bus)进行修改。
有关更多信息,请参阅 轮询消费者。
The ConsumerEndpointFactoryBean now accept a reactiveCustomizer Function to any input channel as reactive stream source and use a ReactiveStreamsConsumer underneath.
This is covered as a ConsumerEndpointSpec.reactive() option in Java DSL and as a @Reactive nested annotation for the messaging annotations.
See Reactive Streams Support for more information.
对于相关消息处理器(一个 Aggregator 和 Resequencer),其 groupTimeoutExpression 现在可被评估为 java.util.Date,以适用于某些细粒度的调度用例。
此外,AbstractCorrelatingMessageHandler 中新增了 BiFunction groupConditionSupplier 选项,用于向分组添加针对消息的 MessageGroup 条件。
有关更多信息,请参阅 聚合器。
The MessageGroup 抽象可以使用 condition 来稍后评估,以便为组做出决策。
有关更多信息,请参阅 消息组条件。
集成流组合
新的 IntegrationFlows.from(IntegrationFlow) 工厂方法已添加,允许从现有流的输出启动当前的 IntegrationFlow。
此外,IntegrationFlowDefinition 已添加一个 to(IntegrationFlow) 终端操作符,以便在另一个流的输入通道处继续当前流。
有关更多信息,请参阅 集成流组合。
AMQP 变更
The AmqpInboundChannelAdapter 和 AmqpInboundGateway(以及相应的 Java DSL 构建器)现在支持作为 AMQP 特定替代方案的 org.springframework.amqp.rabbit.retry.MessageRecoverer,以取代通用的 RecoveryCallback。
有关更多信息,请参阅 AMQP 支持。
Redis 变更
The ReactiveRedisStreamMessageProducer 现在为所有 StreamReceiver.StreamReceiverOptionsBuilder 选项提供了 setter,包括一个 onErrorResume 函数。
有关更多信息,请参阅 Redis 支持。
HTTP 变更
HttpRequestExecutingMessageHandler不再回退到application/x-java-serialized-object内容类型,而是让RestTemplate根据提供的HttpMessageConverter为请求体转换做出最终决定。
它还新增了一个extractResponseBody标志(默认为true),用于仅返回响应体,或无论提供的expectedResponseType如何,都将整个ResponseEntity作为回复消息负载返回。
WebFluxRequestExecutingMessageHandler也提供了相同的选项。
有关更多信息,请参阅HTTP 支持。
文件/FTP/SFTP 变更
持久化文件列表过滤器现在有一个布尔属性 forRecursion。
将此属性设置为 true,也会设置 alwaysAcceptDirectories,这意味着对外部网关(ls 和 mget)的递归操作现在将每次遍历完整的目录树。
这是为了解决目录树深处更改未被检测到的问题。
此外,forRecursion=true 会导致使用文件的完整路径作为元数据存储键;这解决了如果同一名称的文件出现在不同目录中多次时过滤器无法正常工作的问题。
重要提示:这意味着持久化元数据存储中的现有键将无法在顶层目录下的文件中找到。
因此,该属性默认值为 false;此行为可能在未来的版本中发生变化。
The FileInboundChannelAdapterSpec 现在拥有一个便捷的 recursive(boolean) 选项,而无需显式引用 RecursiveDirectoryScanner。
The remoteDirectoryExpression can now be used in the mv command for convenience.
MongoDB 变更
The MongoDbMessageSourceSpec was added into MongoDd Java DSL.
An update option is now exposed on both the MongoDbMessageSource and ReactiveMongoDbMessageSource implementations.
有关更多信息,请参阅 MongoDb 支持。
WebSockets 变更
基于 ServerWebSocketContainer 的 WebSocket 通道适配器现在可以在运行时进行注册和移除。
有关更多信息,请参阅 WebSockets 支持。
JPA 变更
The JpaOutboundGateway now supports an Iterable message payload for a PersistMode.DELETE.
有关更多信息,请参阅 出站通道适配器。
网关变更
之前,在使用 XML 配置时,@Gateway.payloadExpression 会被忽略(针对无参方法)。
存在一个潜在的破坏性变更——如果方法同时被 @Payload 和 @Gateway(具有不同表达式)注解,此前会应用 @Payload,现在则应用 @Gateway.payloadExpression。
有关更多信息,请参阅 使用注解和 XML 进行网关配置 以及 调用无参方法。