新功能
对于已经熟悉 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
低基数标签的 handler
、message-source
和 message-producer
值。
有关更多信息,请参阅 Micrometer 观测。
可选的 Paho MQTT 依赖项
spring-integration-mqtt
的 org.eclipse.paho:org.eclipse.paho.client.mqttv3
依赖项现在也是可选的,就像 org.eclipse.paho:org.eclipse.paho.mqttv5.client
总是可选的一样。
有关更多信息,请参阅 MQTT 支持。
Apache Kafka 支持更改
KafkaMessageSource
和 KafkaMessageDrivenChannelAdapter
现在默认生成 MessageHeaders.ID
和 MessageHeaders.TIMESTAMP
头部,就像 Spring Integration 通道适配器的其余部分一样。
通过注入具有默认设置的 MessagingMessageConverter
,可以恢复到以前的行为。
有关更多信息,请参阅 Apache Kafka 支持。
最近文件过滤器支持
引入了 AbstractRecentFileListFilter
策略,以仅接受那些根据提供的 age
而言不够旧的文件。
提供了相应的实现:RecentFileListFilter
、FtpRecentFileListFilter
、SftpRecentFileListFilter
和 SmbRecentFileListFilter
。
有关更多信息,请参阅 读取文件。
FileExistsMode 表达式支持
远程文件网关 (AbstractRemoteFileOutboundGateway
) 现在支持通过 SpEL 表达式在运行时动态解析 FileExistsMode
。
有关更多信息,请参阅 远程文件网关。
Hazelcast 模块弃用
HazelcastLockRegistry
和 Hazelcast LeaderInitiator
已被弃用,原因是 Hazelcast CP 子系统迁移到企业版。
有关更多信息,请参阅 Hazelcast 支持。
JDBC 支持
如果提供的输入是 Map
,BeanPropertySqlParameterSourceFactory
现在内部使用 MapSqlParameterSource
。
此外,JdbcMessageHandler
暴露了一个 usePayloadAsParameterSource
标志,允许仅针对消息有效载荷处理参数源。
这就是所提到的 MapSqlParameterSource
对带有映射有效载荷的请求消息很有用的地方。
有关更多信息,请参阅 JDBC 支持。
Redis 流支持
ReactiveRedisStreamMessageHandler
现在暴露了一个 Function<Message<?>, RedisStreamCommands.XAddOptions>
,以通过方便的 RedisStreamCommands.XAddOptions
API 提供额外的 XADD
选项。
有关更多信息,请参阅 Redis 支持。