2. 新增功能

2.1. 自 2.9 以来 3.0 中的新增功能

本节介绍从版本 2.9 到版本 3.0 所做的更改。 有关早期版本的更改,请参阅更改历史记录spring-doc.cn

2.1.1. Kafka 客户端版本

此版本需要 3.3.1 .kafka-clientsspring-doc.cn

2.1.2. 恰好一次语义

EOSMode.V1(aka) 不再受支持。ALPHAspring-doc.cn

使用事务时,最低代理版本为 2.5。

有关更多信息,请参阅 Exactly Once 语义KIP-447spring-doc.cn

2.1.3. 观察

现在支持使用 Micrometer 对计时器启用观察和跟踪。 有关更多信息,请参阅千分尺观测spring-doc.cn

2.1.4. 原生镜像

支持创建本机映像。 有关更多信息,请参阅本机映像spring-doc.cn

2.1.5. 全局单嵌入式 Kafka

嵌入式 Kafka () 现在可以作为整个测试计划的单个全局实例启动。 有关更多信息,请参阅对多个测试类使用相同的 Broker(s)。EmbeddedKafkaBrokerspring-doc.cn

2.1.6. 可重试主题更改

此功能不再被视为实验性功能(就其 API 而言),该功能本身自 2.7 以来一直受支持,但破坏 API 更改的可能性比正常情况更大。spring-doc.cn

在此版本中,非阻塞重试基础结构 bean 的引导已更改,以避免在某些应用程序中发生的有关应用程序初始化的一些计时问题。spring-doc.cn

您现在可以为重试容器设置不同的容器;默认情况下,并发性与主容器相同。concurrencyspring-doc.cn

@RetryableTopic现在可以用作自定义注释的元注释,包括对属性的支持。@AliasForspring-doc.cn

有关更多信息,请参阅配置spring-doc.cn

重试主题的默认复制因子为 now (use broker default)。 如果您的代理版本低于 2.4,则现在需要显式设置该属性。-1spring-doc.cn

现在,您可以在同一应用程序上下文中为同一主题配置多个侦听器。 以前,这是不可能的。 有关更多信息,请参阅多个侦听器,相同主题@RetryableTopicspring-doc.cn

中存在 API 的重大更改;具体来说,如果你覆盖了 、 和/或 ; 这些方法现在需要一个参数。RetryTopicConfigurationSupportdestinationTopicResolverkafkaConsumerBackoffManagerretryTopicConfigurerObjectProvider<RetryTopicComponentFactory>spring-doc.cn

2.1.7. 侦听器容器更改

与使用者身份验证和授权失败相关的事件现在由容器发布。 有关更多信息,请参阅应用程序事件spring-doc.cn

您现在可以自定义使用者线程使用的线程名称。 有关更多信息,请参阅容器线程命名spring-doc.cn

已添加 container 属性。 有关更多信息,请参阅 Listener Container Properties (侦听器容器属性)。restartAfterAuthExceptionspring-doc.cn

2.1.8. 更改KafkaTemplate

这个类返回的 future 现在是 s 而不是 s。 请参阅使用 KafkaTemplateCompletableFutureListenableFuturespring-doc.cn

2.1.9. 更改ReplyingKafkaTemplate

这个类返回的 future 现在是 s 而不是 s。 请参阅使用 ReplyingKafkaTemplate使用 Message<?> 请求/回复CompletableFutureListenableFuturespring-doc.cn

2.1.10. 更改@KafkaListener

您现在可以使用自定义关联标头,该标头将在任何回复消息中回显。 有关更多信息,请参见 Using ReplyingKafkaTemplate 末尾的注释。spring-doc.cn

现在,您可以在处理整个批次之前手动提交批次的各个部分。 有关更多信息,请参阅提交偏移量spring-doc.cn

2.1.11. 更改KafkaHeaders

在 2.9.x 中弃用的四个常量现已删除。KafkaHeadersspring-doc.cn

同样, 替换为 和 替换为 。RECEIVED_MESSAGE_KEYRECEIVED_KEYRECEIVED_PARTITION_IDRECEIVED_PARTITIONspring-doc.cn

2.1.12. 测试更改

版本 3.0.7 引入了 a 和 . 有关更多信息,请参阅 Mock Consumer 和 ProducerMockConsumerFactoryMockProducerFactoryspring-doc.cn

从版本 3.0.10 开始,默认情况下,嵌入式 Kafka 代理将 Spring Boot 属性设置为嵌入式代理的地址。spring.kafka.bootstrap-serversspring-doc.cn

2.2. JsonDeserializer(自 3.0.12 起)

发生反序列化异常时,消息不再包含格式为 ;每个数据字节的数值数组没有用,对于大数据来说可能很详细。 与 一起使用时 ,发送到错误处理程序包含包含无法反序列化的原始数据的属性。 当不与 一起使用时,将持续为同一记录发出异常,显示 topic/partition/offset 和 Jackson 引发的原因。SerializationExceptionCan’t deserialize data [[123, 34, 98, 97, 122, …​ErrorHandlingDeserializerDeserializationExceptiondataErrorHandlingDeserializerKafkaConsumerspring-doc.cn