2. 什么是新的?
2.1. 3.0 的新功能自 2.9 版本以来
此部分涵盖了从版本2.9到版本3.0所做的更改。 对于更早版本的变更历史,请参见变更历史。
2.1.3. 观察
现在支持使用 Micrometer 启用计时器和追踪的观察功能。 有关更多信息,请参阅 Micrometer 观察。
2.1.4. 原生映像
支持创建原生映像。
请参阅 原生映像 了解更多信息。
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.
2.1.6. 重试主题变更
此功能不再被视为实验性(就其API而言),该功能自2.7版本以来就已经支持,但可能会有大于正常的API变更可能性。
The bootstrapping of 非阻塞重试基础设施 bean 在此版本中发生了变化,以避免一些应用程序在初始化时出现的一些定时问题。
您现在可以为重试容器设置不同的concurrency;默认情况下,并发数与主容器相同。
@RetryableTopic 可以作为自定义注解上的元注解使用,包括支持 @AliasFor 属性。
See 配置 for more information.
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.
你现在可以在同一个应用程序上下文中为同一主题配置多个@RetryableTopic监听器。
以前这不可能。
有关更多信息,请参阅多个监听器,相同主题(s)。
在RetryTopicConfigurationSupport版本中,存在打破API的更改;具体来说,如果你重写了bean定义方法对于destinationTopicResolver、kafkaConsumerBackoffManager和/或retryTopicConfigurer;这些方法现在需要一个ObjectProvider<RetryTopicComponentFactory>参数。
2.1.7. Listener Container Changes
事件相关的消费者身份验证和授权失败现在由容器发布。 参见应用事件获取更多信息。
您现在可以自定义消费者线程使用的线程名称。 请参阅容器线程命名以获取更多信息。
The container property restartAfterAuthException has been added.
See Listener Container Properties for more information.
2.1.8. KafkaTemplate变更
由此类返回的future现在是CompletableFuture秒,而不是ListenableFuture秒。 见使用KafkaTemplate。
2.1.9. ReplyingKafkaTemplate变更
The futures returned by this class are now CompletableFuture s instead of ListenableFuture s.
See 使用 ReplyingKafkaTemplate 和 带有 Message<?> 秒的请求/回复 <6>.
2.1.10. @KafkaListener变更
您可以现在使用自定义相关标头,该标头将在任何回复消息中被回显。
请参阅使用ReplyingKafkaTemplate一文末尾的说明以获取更多信息。
您现在可以手动提交批次中的部分内容,而无需处理整个批次。
2.1.11. KafkaHeaders变更
在2.9.x版本中被弃用的KafkaHeaders中的四个常量现在已被移除。
-
请将
MESSAGE_KEY改为KEY。 -
改用
PARTITION,而不是PARTITION_ID
同样地,RECEIVED_MESSAGE_KEY 被替换为 RECEIVED_KEY,而 RECEIVED_PARTITION_ID 被替换为 RECEIVED_PARTITION。
2.1.12. 测试更改
Version 3.0.7 引入了 MockConsumerFactory 和 MockProducerFactory。
更多详情请参见 模拟消费者和生产者。
从版本 3.0.10 开始,嵌入式 Kafka 中继器,默认情况下会将 Spring Boot 属性 spring.kafka.bootstrap-servers 设置为嵌入式中继器的地址。
2.2. JsonDeserializer(自 3.0.12 版本)
当反序列化异常发生时,SerializationException消息不再包含具有形式Can’t deserialize data [[123, 34, 98, 97, 122, …的数据;每个数据字节的数值数组对于大数据来说可能没有用且很冗长。
使用ErrorHandlingDeserializer时,DeserializationException发送给错误处理程序包含data属性,该属性包含无法反序列化的原始数据。
如果不使用ErrorHandlingDeserializer,KafkaConsumer将继续为同一记录发出异常,显示主题/分区/偏移量以及由Jackson抛出的错误原因。