|
对于最新稳定版本,请使用 Spring for Apache Kafka 4.0.0! |
有什么新鲜事?
3.2版本自3.1以来的新内容
本节介绍了从3.1版本到3.2版本所做的更改。 关于早期版本的变更,请参见更改历史。
Kafka 客户端版本
此版本需要 3.7.0 版本卡夫卡客户端.
Kafka 客户端 3.7.0 版本引入了新的消费者组协议。
更多细节及其局限性请参见KIP-848。
新的消费者组协议是抢先体验版本,不打算用于生产环境。
此版本仅建议用于测试。
因此,Spring for Apache Kafka 仅在该测试级别支持范围内支持这一新的消费者组协议Kafka-客户端本身。
默认情况下,Spring for Apache Kafka 使用经典的消费者组协议,在测试新的消费者组协议时,需要通过group.protocol消费者的财产。
测试支持变更
这牛皮纸模式在嵌入卡夫卡默认情况下,用户想要使用牛皮纸模式必须启用它。
这是由于在使用过程中观察到的某些不稳定性所致嵌入卡夫卡在牛皮纸模式,尤其是在测试新的消费者组协议时。
新的消费者组协议仅支持牛皮纸因此,在测试新协议时,这需要针对真实的Kafka集群进行,而不是基于KafkaClusterTestKit哪嵌入卡夫卡基于。
此外,在多场比赛中还观察到其他一些比赛条件卡夫卡听众方法:嵌入卡夫卡在牛皮纸模式。
在这些问题解决之前,牛皮纸默认嵌入卡夫卡将保持为false.
Kafka Streams 交互式查询支持
一个新的APIKafkaStreamsInteractiveQuerySupport用于访问Kafka Streams交互式查询中使用的可查询存储。
详情请参见 Kafka Streams 互动支持。
交易Id后缀策略
一个新的交易Id后缀策略引入接口以管理transactional.id后缀。
默认实现为DefaultTransactionIdSuffixStrategy设置时maxCache大于 0 可以重复使用transactional.id在特定范围内,否则通过递增计数器即时生成后缀。
更多信息请参见固定交易Id后缀。
异步@KafkaListener返回
@KafkaListener(和@KafkaHandler)方法现在可以返回异步返回类型包括CompletableFuture<?>,单核细胞增多症<?>以及Kotlin暂停功能。
更多信息请参见异步返回。
基于抛出异常将消息路由到自定义DLT
现在可以根据异常类型将消息重定向到自定义DLT,而异常在消息处理过程中抛出了异常。
重定向的规则可以通过以下方式设定RetryableTopic.exceptionBasedDltRouting或者RetryTopicConfigurationBuilder.dltRoutingRules.
自定义DLT以及其他重试和死字母主题都会自动生成。
更多信息请参见基于抛出异常将消息路由到自定义DLT。
弃用 ContainerProperties transactionManager 属性
退役transactionManager属性容器属性支持的KafkaAwareTransactionManager,这是一种比一般更窄的类型。PlatformTransactionManager.参见 ContainerProperties 和事务同步。
回滚处理后
一个新的AfterRollback处理器应用程序接口processBatch提供。
更多信息请参见后回滚处理器。
更改@RetryableTopic SameIntervalTopicReuseStrategy默认值
改变@RetryableTopic属性相同时间间隔主题再利用策略默认值为SINGLE_TOPIC.
关于最大区间指数延迟,请参见单一主题。
非阻塞重试支持类级@KafkaListener
非阻塞重试支持类@KafkaListener。 参见非阻挡重试。
支持流程@RetryableTopic在 RetryTopicConfigurationProvider 中的一个类上。
提供一个新的公共 API 供你查找RetryTopicConfiguration.
参见Find RetryTopicConfiguration
RetryTopicConfigurer support process MultiMethodKafkaListenerEndpoint.
这RetryTopicConfigurer支持流程与寄存器MultiMethodKafkaListenerEndpoint.
这MultiMethodKafkaListenerEndpoint提供接球手/二传手对于性质defaultMethod和方法.
修改EndpointCustomizer严格来说MethodKafkaListenerEndpoint类型。
这EndpointHandlerMethod添加新构造器,为所提供的豆构建实例。
提供新的职业EndpointHandlerMultiMethodTo Handler 多方法用于重试端点。
新的API方法,基于用户提供的函数寻找偏移量
消费者回拨提供了一个新的 API,用于基于用户自定义函数寻找偏移量,该函数以当前的偏移量为参数。
详情请参见 Seek API 文档。
@PartitionOffset SeekPosition 的支持
添加寻觅位置属性到@PartitionOffset支持TopicPartitionOffset.SeekPosition.
详情请参见手动分配。
TopicPartitionOffset 中新增的构造器,接受一个函数来计算 寻找 的偏移量
主题分区偏移有一个新的构造函数,该函数需要用户自给的函数来计算要寻找的偏移量。
当使用该构造函数时,框架会调用当前消费者偏移位置的输入参数。
详情请参见 Seek API 文档。
Spring Boot 应用名作为默认客户端 ID 前缀
对于定义应用程序名称的 Spring Boot 应用程序,现在使用该名称 作为某些客户端类型自动生成客户端ID的默认前缀。 详情请参见默认客户端ID前缀。
增强MessageListenerContainer的检索
ListenerContainerRegistry提供了两个新的 API,动态查找和过滤MessageListenerContainer实例。getListenerContainersMatching(Predicate<String> idMatcher)通过ID筛选,另一个是getListenerContainersMatching(BiPredicate<String, MessageListenerContainer> matcher)通过ID和容器属性进行筛选。
看@KafkaListener生命周期管理的API文档更多信息请见。
通过提供更多追踪标签增强观察
卡夫卡模板观察提供更多追踪标签(基数较低)。卡夫卡听众观察提供了新的API,用于查找高基数的键名以及更多的追踪标签(高基数或低基数)。
参见测距观察