新功能

对于已经熟悉 Spring Integration 的用户,本章简要概述了 6.5 版本的新功能。 如果您对早期版本中引入的更改和功能感兴趣,请参阅 更改历史

Spring Integration 6.5 有哪些新功能?

如果您对更多细节感兴趣,请参阅作为 6.5 开发过程一部分已解决的 Issue Tracker 票证。

总的来说,该项目已迁移到最新的依赖版本。

一般更改

以前已弃用的 org.springframework.util.concurrent.ListenableFuture 用法已被删除,转而使用 CompletableFuture

以前已弃用的基于 SpEL 的控制总线组件已被删除,转而使用 ControlBusCommandRegistry 周围的功能。 <control-bus use-registry=""> 属性现在已弃用,没有替代品,因为只提供 ControlBusCommandRegistry 功能。 Java DSL controlBusOnRegistry() 操作符已弃用,转而使用恢复的 controlBus(),该操作符现在完全基于 ControlBusCommandRegistry。 有关更多信息,请参阅 控制总线

AbstractCorrelatingMessageHandler 不再因为 MessageGroupProcessor 的结果是有效载荷集合而抛出 IllegalArgumentException。 相反,这样的集合被包装到一个单独的回复消息中。 有关更多信息,请参阅 聚合器

当尝试向未运行的应用程序发送消息时,AbstractMessageChannel bean 现在会抛出特殊的 MessageDispatchingException。 通常,在 afterPropertiesSet()@PostConstruct 或 bean 定义方法中尝试生成消息是设计错误。 SmartLifecycle.start() 是此类逻辑的首选方式,或者最好通过入站通道适配器来完成。

Java DSL gateway() 操作符现在完全支持 async(true) 行为。 有关更多信息,请参阅 消息网关

LockRequestHandlerAdvice

引入了一个新的 LockRequestHandlerAdvice,用于在消息处理程序调用时为基于请求消息的键保持锁定。 有关更多信息,请参阅 为端点添加行为

关联处理程序的 discardIndividuallyOnExpiry 选项

聚合器和重排序器现在可以通过将 discardIndividuallyOnExpiry 设置为 false,将整个过期的组作为单个消息丢弃。 有关更多信息,请参阅 ReleaseStrategy

MessageStore 中的 LockRegistry

AbstractMessageGroupStore 现在可以配置 LockRegistry 以原子地执行一系列持久化操作。 有关更多信息,请参阅 使用 LockRegistry

Micrometer 观测更改

SourcePollingChannelAdapter 端点现在为接收到的消息启动一个 CONSUMER 类型的观测。 MessageReceiverContext 现在区分 spring.integration.type 低基数标签的 handlermessage-sourcemessage-producer 值。 有关更多信息,请参阅 Micrometer 观测

可选的 Paho MQTT 依赖项

spring-integration-mqttorg.eclipse.paho:org.eclipse.paho.client.mqttv3 依赖项现在也是可选的,就像 org.eclipse.paho:org.eclipse.paho.mqttv5.client 总是可选的一样。 有关更多信息,请参阅 MQTT 支持

Apache Kafka 支持更改

KafkaMessageSourceKafkaMessageDrivenChannelAdapter 现在默认生成 MessageHeaders.IDMessageHeaders.TIMESTAMP 头部,就像 Spring Integration 通道适配器的其余部分一样。 通过注入具有默认设置的 MessagingMessageConverter,可以恢复到以前的行为。 有关更多信息,请参阅 Apache Kafka 支持

最近文件过滤器支持

引入了 AbstractRecentFileListFilter 策略,以仅接受那些根据提供的 age 而言不够旧的文件。 提供了相应的实现:RecentFileListFilterFtpRecentFileListFilterSftpRecentFileListFilterSmbRecentFileListFilter。 有关更多信息,请参阅 读取文件

FileExistsMode 表达式支持

远程文件网关 (AbstractRemoteFileOutboundGateway) 现在支持通过 SpEL 表达式在运行时动态解析 FileExistsMode。 有关更多信息,请参阅 远程文件网关

Hazelcast 模块弃用

HazelcastLockRegistry 和 Hazelcast LeaderInitiator 已被弃用,原因是 Hazelcast CP 子系统迁移到企业版。 有关更多信息,请参阅 Hazelcast 支持

JDBC 支持

如果提供的输入是 MapBeanPropertySqlParameterSourceFactory 现在内部使用 MapSqlParameterSource。 此外,JdbcMessageHandler 暴露了一个 usePayloadAsParameterSource 标志,允许仅针对消息有效载荷处理参数源。 这就是所提到的 MapSqlParameterSource 对带有映射有效载荷的请求消息很有用的地方。 有关更多信息,请参阅 JDBC 支持

Redis 流支持

ReactiveRedisStreamMessageHandler 现在暴露了一个 Function<Message<?>, RedisStreamCommands.XAddOptions>,以通过方便的 RedisStreamCommands.XAddOptions API 提供额外的 XADD 选项。 有关更多信息,请参阅 Redis 支持