自 3.1 以来 3.2 中的新增功能

本节介绍从 3.1 版到 3.2 版所做的更改。 有关早期版本中的更改,请参阅更改历史记录Spring中文文档

Kafka 客户端版本

此版本需要 3.7.0 . Kafka 客户端 3.7.0 版本引入了新的消费者组协议。 有关更多详细信息及其局限性,请参阅 KIP-848。 新的使用者组协议是抢先体验版本,不打算在生产中使用。 在此版本中,建议仅用于测试目的。 因此,Spring for Apache Kafka 仅在其本身提供的此类测试级别支持范围内支持这种新的使用者组协议。 默认情况下,Spring for Apache Kafka 使用经典的使用者组协议,在测试新的使用者组协议时,需要通过使用者上的属性选择加入。kafka-clientskafka-clientgroup.protocolSpring中文文档

测试支持更改

默认情况下,该模式处于禁用状态,想要使用该模式的用户必须启用它。 这是由于在模式下使用时观察到的某些不稳定性,尤其是在测试新的使用者组协议时。 新的使用者组协议仅在模式下受支持,因此,在测试新协议时,需要针对真实的 Kafka 集群而不是基于 的集群。 此外,在运行具有 in 模式的多个方法时,还观察到了其他一些竞争条件。 在这些问题得到解决之前,默认值将保持为 。kraftEmbeddedKafkakraftEmbeddedKafkakraftkraftKafkaClusterTestKitEmbeddedKafkaKafkaListenerEmbeddedKafkakraftkraftEmbeddedKafkafalseSpring中文文档

Kafka Streams 交互式查询支持

用于访问 Kafka Streams 交互式查询中使用的可查询存储的新 API。 有关更多详细信息,请参阅 Kafka Streams 交互式支持KafkaStreamsInteractiveQuerySupportSpring中文文档

TransactionIdSuffixStrategy

引入了一个新界面来管理后缀。 默认实现是当设置大于零时可以在特定范围内重复使用,否则将通过递增计数器动态生成后缀。 有关详细信息,请参阅 Fixed TransactionIdSuffixTransactionIdSuffixStrategytransactional.idDefaultTransactionIdSuffixStrategymaxCachetransactional.idSpring中文文档

异步@KafkaListener返回

@KafkaListener(和 ) 方法现在可以返回异步返回类型包括 、 和 Kotlin 函数。 有关详细信息,请参阅异步返回@KafkaHandlerCompletableFuture<?>Mono<?>suspendSpring中文文档

根据引发的异常将消息路由到自定义 DLT

现在可以根据消息处理过程中引发的异常类型将消息重定向到自定义 DLT。 重定向的规则是通过 或 设置的。 自定义 DLT 以及其他重试和死信主题是自动创建的。 有关详细信息,请参阅基于引发的异常将消息路由到自定义 DLTRetryableTopic.exceptionBasedDltRoutingRetryTopicConfigurationBuilder.dltRoutingRulesSpring中文文档

弃用 ContainerProperties transactionManager 属性

弃用该属性以支持 ,与一般类型相比,类型更窄。请参阅 ContainerProperties事务同步transactionManagerContainerPropertiesKafkaAwareTransactionManagerPlatformTransactionManagerSpring中文文档

回滚处理后

提供了新的 API。 有关详细信息,请参阅回滚后处理器AfterRollbackProcessorprocessBatchSpring中文文档

更改 SameIntervalTopicReuseStrategy 默认值@RetryableTopic

将属性默认值更改为 。 请参阅 maxInterval 指数延迟的单个主题@RetryableTopicSameIntervalTopicReuseStrategySINGLE_TOPICSpring中文文档

非阻塞重试支持类级别@KafkaListener

对 RetryTopicConfigurationProvider 中的类的支持进程@RetryableTopic。

提供新的公共 API 来查找 。 请参阅查找 RetryTopicConfigurationRetryTopicConfigurationSpring中文文档

RetryTopicConfigurer 支持进程 MultiMethodKafkaListenerEndpoint。

支持过程和注册。 提供属性和 . 严格修改类型。 添加新构造函数为提供的 Bean 构造一个实例。 为处理程序提供新的类,用于重试终结点的多方法。RetryTopicConfigurerMultiMethodKafkaListenerEndpointMultiMethodKafkaListenerEndpointgetter/setterdefaultMethodmethodsEndpointCustomizerMethodKafkaListenerEndpointEndpointHandlerMethodEndpointHandlerMultiMethodSpring中文文档

新的 API 方法,用于根据用户提供的函数寻求偏移量

ConsumerCallback提供了一个新的 API 来查找基于用户定义函数的偏移量,该函数将使用者中的当前偏移量作为参数。 有关更多详细信息,请参阅查找 API 文档Spring中文文档

@PartitionOffset 对 SeekPosition 的支持

添加属性以支持 . 有关详细信息,请参阅手动分配seekPosition@PartitionOffsetTopicPartitionOffset.SeekPositionSpring中文文档

TopicPartitionOffset 中的新构造函数,该构造函数接受一个函数来计算要查找的偏移量

TopicPartitionOffset具有一个新的构造函数,该构造函数采用用户提供的函数来计算要查找的偏移量。 使用此构造函数时,框架将使用当前使用者偏移位置的输入参数调用该函数。 有关更多详细信息,请参阅查找 API 文档Spring中文文档

Spring Boot 应用程序名称作为默认客户端 ID 前缀

对于定义应用程序名称的 Spring Boot 应用程序,现在使用此名称 作为某些客户端类型自动生成的客户端 ID 的默认前缀。 有关详细信息,请参阅默认客户端 ID 前缀Spring中文文档

增强了对 MessageListenerContainers 的检索

ListenerContainerRegistry提供了两个新的 API 动态查找和筛选实例。 按 ID 筛选,另一种是按 ID 和容器属性筛选。MessageListenerContainergetListenerContainersMatching(Predicate<String> idMatcher)getListenerContainersMatching(BiPredicate<String, MessageListenerContainer> matcher)Spring中文文档

通过提供更多跟踪标签来增强观察

KafkaTemplateObservation提供更多的跟踪标签(低基数)。 提供了一个新的 API 来查找高基数键名和更多跟踪标签(高基数或低基数)。 参见千分尺观察KafkaListenerObservationSpring中文文档