跳到主要内容

有什么新增

相比3.1版本3.2有什么新增功能

本节介绍从版本 3.1 到版本 3.2 所做的更改。有关早期版本的更改,请参阅 历史变更

Kafka 客户端版本

当前需要kafka-clients 3.7版本,Kafka客户端引入了新的消费者组协议。有关更多详细信息及其限制,请参阅KIP-848 新的消费者组协议是早期访问版本,并不意味着在生产中使用。在这个版本里仅推荐测试使用。因此,Spring-Kafka 仅在 kafka-client 本身提供此类测试级别支持的范围内支持这种新的消费者组协议。 默认情况下,Spring-Kafka 使用经典的消费者组协议,在测试新的消费者组协议时,需要通过消费者上的 group.protocol 属性选择加入。

测试支持变更

默认情况下,EmbeddedKafka 中禁用 kraft 模式,想要使用 kraft 模式的用户必须启用它。这是由于在 kraft 模式下使用 EmbeddedKafka 时观察到的某些不稳定性,特别是在测试新的消费者组协议时。新的消费者组协议仅在 kraft 模式下被支持,因此,在测试新协议时,需要针对真实的 Kafka 集群来完成,而不是基于 EmbeddedKafka 所基于的 KafkaClusterTestKit 集群。此外,在 kraft 模式下使用 EmbeddedKafka 运行多个 KafkaListener 方法时,还观察到了一些其他竞争条件。在这些问题得到解决之前,EmbeddedKafka 上的 kraft 默认值将保持为 false。

Kafka Streams交互式查询支持

交互式查询增加了一个新的API KafkaStreamsInteractiveQuerySupport 用于对可查询存储区的交互查询,详见Kafka Streams Interactive Support

TransactionIdSuffixStrategy

采用新的TransactionIdSuffixStrategy接口来管理 transactional.id 后缀,默认实现是DefaultTransactionIdSuffixStrategy,当maxCache设置大于0时, transactional.id在一个特定范围内被复用,否则后缀将通过增加计数器来动态生成,参见Fixed TransactionIdSuffix

@KafkaListener 异步返回

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

根据抛出的异常将消息路由到自定义 DLT

现在可以根据消息处理过程中发生的异常类型来重定向消息到自定义的DLT,重定向规则通过 RetryableTopic.exceptionBasedDltRouting 或 RetryTopicConfigurationBuilder.dltRoutingRules 设置。自动创建自定义 DLT 以及其他重试和死信主题