内容提要
Spring Integration 6.3.0-M2、6.2.3 和 6.1.7 现已发布。值得注意的变化包括与 Kotlin 2.0 的兼容性、移除 spring-integration-security 模块、弃用 ObservationPropagationChannelInterceptor,以及对 MessageHistory 头的改进。其他更新包括新的配置选项和错误修复。
延伸解读
安全模块移除与迁移建议
6.3.0-M2 移除了 spring-integration-security 模块,建议开发者迁移至 Spring Security 的 SecurityContextChannelInterceptor 和 SecurityContextPropagationChannelInterceptor。这一变化意味着安全上下文传播现在由 Spring Security 统一管理,可能简化依赖并减少重复。升级时需检查现有配置,确保安全拦截器正确替换,避免安全上下文丢失。
观察传播机制变更的影响
ObservationPropagationChannelInterceptor 被弃用,因其无法在线程间或持久存储中正确传递观察状态。新方法要求在 MessageChannel 和订阅的 MessageHandler 上启用观察,通过消息头以 PRODUCER 和 CONSUMER 类型传播追踪信息。这提高了追踪准确性,但需要调整配置,确保每个通道和处理程序都启用观察,否则可能丢失追踪数据。
性能与测试改进
MessageHistory 头改为可变,避免了每次跟踪时创建新消息,从而提升性能。同时,基于 UnicastingDispatcher 的 MessageChannel 可配置 Predicate<Exception> failoverStrategy,实现动态故障转移决策。测试方面,新增 MockIntegrationContext.substituteTriggerFor() API,便于在测试中调整基于时间的配置。这些改进有助于优化消息流和简化测试。
Q&A
Spring Integration 6.3.0-M2 版本有哪些重要变化?
6.3.0-M2 版本的主要变化包括与 Kotlin 2.0 的兼容性、移除 spring-integration-security 模块、弃用 ObservationPropagationChannelInterceptor,以及对 MessageHistory 头的改进。
为什么 ObservationPropagationChannelInterceptor 被弃用?
ObservationPropagationChannelInterceptor 被弃用是因为它无法在线程之间或持久存储中正确传递观察状态。
如何在 Spring Integration 中启用观察?
观察需要在 MessageChannel 和相应的 MessageHandler 上启用,以通过消息头传播追踪信息。
MessageHistory 头的改进带来了什么好处?
MessageHistory 头现在是可变的,这提高了性能,避免了每次跟踪时创建新消息的开销。
新版本中如何处理异常?
基于 UnicastingDispatcher 的 MessageChannel 实现现在可以配置 Predicate<Exception> failoverStrategy,以动态决定异常处理。
Mqttv5PahoMessageDrivenChannelAdapter 有什么新特性?
Mqttv5PahoMessageDrivenChannelAdapter 现在使用订阅标识符来支持共享订阅。