2. 什么是新的?

2.1. 3.0 的新功能自 2.9 版本以来

此部分涵盖了从版本2.9到版本3.0所做的更改。 对于更早版本的变更历史,请参见变更历史spring-doc.cadn.net.cn

2.1.1. Kafka 客户端版本

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

2.1.2. 至少一次语义

EOSMode.V1 (aka ALPHA) 不再受支持。spring-doc.cadn.net.cn

在使用事务时,最小的broker版本是2.5。

至多一次语义KIP-447以获取更多信息。spring-doc.cadn.net.cn

2.1.3. 观察

现在支持使用 Micrometer 启用计时器和追踪的观察功能。 有关更多信息,请参阅 Micrometer 观察spring-doc.cadn.net.cn

2.1.4. 原生映像

支持创建原生映像。
请参阅 原生映像 了解更多信息。spring-doc.cadn.net.cn

2.1.5. 全局单一嵌入式Kafka

The embedded Kafka (EmbeddedKafkaBroker) can now be start as a single global instance for the whole test plan. See Using the Same Broker(s) for Multiple Test Classes for more information.spring-doc.cadn.net.cn

2.1.6. 重试主题变更

此功能不再被视为实验性(就其API而言),该功能自2.7版本以来就已经支持,但可能会有大于正常的API变更可能性。spring-doc.cadn.net.cn

The bootstrapping of 非阻塞重试基础设施 bean 在此版本中发生了变化,以避免一些应用程序在初始化时出现的一些定时问题。spring-doc.cadn.net.cn

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

@RetryableTopic 可以作为自定义注解上的元注解使用,包括支持 @AliasFor 属性。spring-doc.cadn.net.cn

See 配置 for more information.spring-doc.cadn.net.cn

The default replication factor for the retry topics is now -1 (use broker default). If your broker is earlier that version 2.4, you will now need to explicitly set the property.spring-doc.cadn.net.cn

你现在可以在同一个应用程序上下文中为同一主题配置多个@RetryableTopic监听器。 以前这不可能。 有关更多信息,请参阅多个监听器,相同主题(s)spring-doc.cadn.net.cn

RetryTopicConfigurationSupport版本中,存在打破API的更改;具体来说,如果你重写了bean定义方法对于destinationTopicResolverkafkaConsumerBackoffManager和/或retryTopicConfigurer;这些方法现在需要一个ObjectProvider<RetryTopicComponentFactory>参数。spring-doc.cadn.net.cn

2.1.7. Listener Container Changes

事件相关的消费者身份验证和授权失败现在由容器发布。 参见应用事件获取更多信息。spring-doc.cadn.net.cn

您现在可以自定义消费者线程使用的线程名称。 请参阅容器线程命名以获取更多信息。spring-doc.cadn.net.cn

The container property restartAfterAuthException has been added. See Listener Container Properties for more information.spring-doc.cadn.net.cn

2.1.8. KafkaTemplate变更

由此类返回的future现在是CompletableFuture秒,而不是ListenableFuture秒。 见使用KafkaTemplatespring-doc.cadn.net.cn

2.1.9. ReplyingKafkaTemplate变更

The futures returned by this class are now CompletableFuture s instead of ListenableFuture s. See 使用 ReplyingKafkaTemplate带有 Message<?> 秒的请求/回复 <6>.spring-doc.cadn.net.cn

2.1.10. @KafkaListener变更

您可以现在使用自定义相关标头,该标头将在任何回复消息中被回显。 请参阅使用ReplyingKafkaTemplate一文末尾的说明以获取更多信息。spring-doc.cadn.net.cn

您现在可以手动提交批次中的部分内容,而无需处理整个批次。spring-doc.cadn.net.cn

2.1.11. KafkaHeaders变更

在2.9.x版本中被弃用的KafkaHeaders中的四个常量现在已被移除。spring-doc.cadn.net.cn

同样地,RECEIVED_MESSAGE_KEY 被替换为 RECEIVED_KEY,而 RECEIVED_PARTITION_ID 被替换为 RECEIVED_PARTITIONspring-doc.cadn.net.cn

2.1.12. 测试更改

Version 3.0.7 引入了 MockConsumerFactoryMockProducerFactory。 更多详情请参见 模拟消费者和生产者spring-doc.cadn.net.cn

从版本 3.0.10 开始,嵌入式 Kafka 中继器,默认情况下会将 Spring Boot 属性 spring.kafka.bootstrap-servers 设置为嵌入式中继器的地址。spring-doc.cadn.net.cn

2.2. JsonDeserializer(自 3.0.12 版本)

当反序列化异常发生时,SerializationException消息不再包含具有形式Can’t deserialize data [[123, 34, 98, 97, 122, …​的数据;每个数据字节的数值数组对于大数据来说可能没有用且很冗长。 使用ErrorHandlingDeserializer时,DeserializationException发送给错误处理程序包含data属性,该属性包含无法反序列化的原始数据。 如果不使用ErrorHandlingDeserializerKafkaConsumer将继续为同一记录发出异常,显示主题/分区/偏移量以及由Jackson抛出的错误原因。spring-doc.cadn.net.cn