此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring for Apache Kafka 3.2.1! |
此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring for Apache Kafka 3.2.1! |
自 3.1 以来 3.2 中的新增功能
本节介绍从 3.1 版到 3.2 版所做的更改。 有关早期版本中的更改,请参阅更改历史记录。
Kafka 客户端版本
此版本需要 3.7.0 .
Kafka 客户端 3.7.0 版本引入了新的消费者组协议。
有关更多详细信息及其局限性,请参阅 KIP-848。
新的使用者组协议是抢先体验版本,不打算在生产中使用。
在此版本中,建议仅用于测试目的。
因此,Spring for Apache Kafka 仅在其本身提供的此类测试级别支持范围内支持这种新的使用者组协议。
默认情况下,Spring for Apache Kafka 使用经典的使用者组协议,在测试新的使用者组协议时,需要通过使用者上的属性选择加入。kafka-clients
kafka-client
group.protocol
测试支持更改
默认情况下,该模式处于禁用状态,想要使用该模式的用户必须启用它。
这是由于在模式下使用时观察到的某些不稳定性,尤其是在测试新的使用者组协议时。
新的使用者组协议仅在模式下受支持,因此,在测试新协议时,需要针对真实的 Kafka 集群而不是基于 的集群。
此外,在运行具有 in 模式的多个方法时,还观察到了其他一些竞争条件。
在这些问题得到解决之前,默认值将保持为 。kraft
EmbeddedKafka
kraft
EmbeddedKafka
kraft
kraft
KafkaClusterTestKit
EmbeddedKafka
KafkaListener
EmbeddedKafka
kraft
kraft
EmbeddedKafka
false
Kafka Streams 交互式查询支持
用于访问 Kafka Streams 交互式查询中使用的可查询存储的新 API。
有关更多详细信息,请参阅 Kafka Streams 交互式支持。KafkaStreamsInteractiveQuerySupport
TransactionIdSuffixStrategy
引入了一个新界面来管理后缀。
默认实现是当设置大于零时可以在特定范围内重复使用,否则将通过递增计数器动态生成后缀。
有关详细信息,请参阅 Fixed TransactionIdSuffix。TransactionIdSuffixStrategy
transactional.id
DefaultTransactionIdSuffixStrategy
maxCache
transactional.id
异步@KafkaListener返回
@KafkaListener
(和 ) 方法现在可以返回异步返回类型包括 、 和 Kotlin 函数。
有关详细信息,请参阅异步返回。@KafkaHandler
CompletableFuture<?>
Mono<?>
suspend
根据引发的异常将消息路由到自定义 DLT
现在可以根据消息处理过程中引发的异常类型将消息重定向到自定义 DLT。
重定向的规则是通过 或 设置的。
自定义 DLT 以及其他重试和死信主题是自动创建的。
有关详细信息,请参阅基于引发的异常将消息路由到自定义 DLT。RetryableTopic.exceptionBasedDltRouting
RetryTopicConfigurationBuilder.dltRoutingRules
弃用 ContainerProperties transactionManager 属性
弃用该属性以支持 ,与一般类型相比,类型更窄。请参阅 ContainerProperties 和事务同步。transactionManager
ContainerProperties
KafkaAwareTransactionManager
PlatformTransactionManager
回滚处理后
提供了新的 API。
有关详细信息,请参阅回滚后处理器。AfterRollbackProcessor
processBatch
更改 SameIntervalTopicReuseStrategy 默认值@RetryableTopic
将属性默认值更改为 。
请参阅 maxInterval 指数延迟的单个主题。@RetryableTopic
SameIntervalTopicReuseStrategy
SINGLE_TOPIC
非阻塞重试支持类级别@KafkaListener
非阻塞重试支持对类进行@KafkaListener。 请参阅非阻塞重试。
对 RetryTopicConfigurationProvider 中的类的支持进程@RetryableTopic。
提供新的公共 API 来查找 。
请参阅查找 RetryTopicConfigurationRetryTopicConfiguration
RetryTopicConfigurer 支持进程 MultiMethodKafkaListenerEndpoint。
支持过程和注册。
提供属性和 .
严格修改类型。
添加新构造函数为提供的 Bean 构造一个实例。
为处理程序提供新的类,用于重试终结点的多方法。RetryTopicConfigurer
MultiMethodKafkaListenerEndpoint
MultiMethodKafkaListenerEndpoint
getter/setter
defaultMethod
methods
EndpointCustomizer
MethodKafkaListenerEndpoint
EndpointHandlerMethod
EndpointHandlerMultiMethod
新的 API 方法,用于根据用户提供的函数寻求偏移量
ConsumerCallback
提供了一个新的 API 来查找基于用户定义函数的偏移量,该函数将使用者中的当前偏移量作为参数。
有关更多详细信息,请参阅查找 API 文档。
@PartitionOffset 对 SeekPosition 的支持
添加属性以支持 .
有关详细信息,请参阅手动分配。seekPosition
@PartitionOffset
TopicPartitionOffset.SeekPosition
TopicPartitionOffset 中的新构造函数,该构造函数接受一个函数来计算要查找的偏移量
TopicPartitionOffset
具有一个新的构造函数,该构造函数采用用户提供的函数来计算要查找的偏移量。
使用此构造函数时,框架将使用当前使用者偏移位置的输入参数调用该函数。
有关更多详细信息,请参阅查找 API 文档。
Spring Boot 应用程序名称作为默认客户端 ID 前缀
对于定义应用程序名称的 Spring Boot 应用程序,现在使用此名称 作为某些客户端类型自动生成的客户端 ID 的默认前缀。 有关详细信息,请参阅默认客户端 ID 前缀。
增强了对 MessageListenerContainers 的检索
ListenerContainerRegistry
提供了两个新的 API 动态查找和筛选实例。 按 ID 筛选,另一种是按 ID 和容器属性筛选。MessageListenerContainer
getListenerContainersMatching(Predicate<String> idMatcher)
getListenerContainersMatching(BiPredicate<String, MessageListenerContainer> matcher)
通过提供更多跟踪标签来增强观察
KafkaTemplateObservation
提供更多的跟踪标签(低基数)。 提供了一个新的 API 来查找高基数键名和更多跟踪标签(高基数或低基数)。
参见千分尺观察KafkaListenerObservation