2. 新增功能

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

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

2.1.1. Kafka 客户端版本

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

2.1.2. 恰好一次语义

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

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

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

2.1.3. 观察

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

2.1.4. 原生镜像

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

2.1.5. 全局单嵌入式 Kafka

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

2.1.6. 可重试主题更改

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

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

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

@RetryableTopic现在可以用作自定义注释上的元注释,包括对@AliasFor性能。spring-doc.cadn.net.cn

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

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

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

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

2.1.7. 侦听器容器更改

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

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

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

2.1.8.KafkaTemplate变化

该类返回的 future 现在是CompletableFutures 而不是ListenableFutures. 看KafkaTemplate.spring-doc.cadn.net.cn

2.1.9.ReplyingKafkaTemplate变化

该类返回的 future 现在是CompletableFutures 而不是ListenableFutures. 看ReplyingKafkaTemplate请求/回复Message<?>s.spring-doc.cadn.net.cn

2.1.10.@KafkaListener变化

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

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

2.1.11.KafkaHeaders变化

4 个常量KafkaHeaders在 2.9.x 中弃用的 现在已被删除。spring-doc.cadn.net.cn

同样地RECEIVED_MESSAGE_KEY替换为RECEIVED_KEYRECEIVED_PARTITION_ID替换为RECEIVED_PARTITION.spring-doc.cadn.net.cn

2.1.12. 测试更改

版本 3.0.7 引入了MockConsumerFactoryMockProducerFactory. 有关更多信息,请参阅 Mock Consumer 和 Producerspring-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 起)

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