2. 有什么新功能?

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

本节介绍从 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. 观察

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

2.1.4. 原生镜像

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

2.1.5. 全局单嵌入 Kafka

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

2.1.6. 可重试主题更改

此功能不再被视为实验性功能(就其 API 而言),该功能本身从 2.7 开始就得到了支持,但破坏 API 更改的可能性比正常情况更大。spring-doc.cadn.net.cn

在此版本中,Non-Blocking Retries 基础架构 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

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

2.1.8.KafkaTemplate变化

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

2.1.9.ReplyingKafkaTemplate变化

该类返回的合约现在是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变化

四个常量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. 有关更多信息,请参阅模拟消费者和生产者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 起)

当发生反序列化异常时,SerializationExceptionmessage 不再包含表单Can’t deserialize data [[123, 34, 98, 97, 122, …​; 每个数据字节的数值数组没有用处,对于大数据可能会很冗长。当与ErrorHandlingDeserializerDeserializationException发送到错误处理程序包含data包含无法反序列化的原始数据的属性。当不与ErrorHandlingDeserializerKafkaConsumer将不断为显示主题/分区/偏移量和 Jackson 抛出的原因的同一记录发出异常。spring-doc.cadn.net.cn