2. 有什么新功能?
2.1. 3.0 自 2.9 以来的新增功能
本节介绍从 2.9 版到 3.0 版所做的更改。有关早期版本中的更改,请参阅更改历史记录。
2.1.3. 观察
现在支持启用计时器的观察和使用千分尺的跟踪。有关更多信息,请参阅千分尺观察。
2.1.4. 原生镜像
支持创建本机映像。有关详细信息,请参阅本机映像。
2.1.5. 全局单嵌入 Kafka
嵌入式 Kafka (EmbeddedKafkaBroker) 现在可以作为整个测试计划的单个全局实例启动。有关更多信息,请参阅对多个测试类使用相同的代理。
2.1.6. 可重试主题更改
此功能不再被视为实验性功能(就其 API 而言),该功能本身从 2.7 开始就得到了支持,但破坏 API 更改的可能性比正常情况更大。
在此版本中,Non-Blocking Retries 基础架构 Bean 的引导已更改,以避免某些应用程序中出现的有关应用程序初始化的一些计时问题。
您现在可以设置不同的concurrency对于重试容器;默认情况下,并发与主容器相同。
@RetryableTopic现在可以用作自定义注释的元注释,包括对@AliasFor性能。
有关详细信息,请参阅配置。
重试主题的默认复制因子现在是-1(使用 broker default )。如果您的代理版本早于 2.4,您现在需要显式设置该属性。
您现在可以配置多个@RetryableTopic同一应用程序上下文中同一主题上的侦听器。以前,这是不可能的。有关更多信息,请参阅多个侦听器,同一主题。
有重大 API 更改RetryTopicConfigurationSupport; 具体来说,如果您覆盖destinationTopicResolver,kafkaConsumerBackoffManager和/或retryTopicConfigurer; 这些方法现在需要ObjectProvider<RetryTopicComponentFactory>参数。
2.1.7. 侦听器容器更改
与使用者身份验证和授权失败相关的事件现在由容器发布。有关更多信息,请参阅应用程序事件。
您现在可以自定义使用者线程使用的线程名称。有关更多信息,请参阅容器线程命名。
容器属性restartAfterAuthException已添加。有关更多信息,请参阅侦听器容器属性。
2.1.8.KafkaTemplate变化
该类返回的合约现在是CompletableFutures 而不是ListenableFutures. 看用KafkaTemplate.
2.1.9.ReplyingKafkaTemplate变化
该类返回的合约现在是CompletableFutures 而不是ListenableFutures. 看用ReplyingKafkaTemplate和请求/回复Message<?>s.
2.1.10.@KafkaListener变化
您现在可以使用自定义关联标头,该标头将在任何回复消息中回显。请参阅末尾的注释用ReplyingKafkaTemplate了解更多信息。
现在,您可以在处理整个批次之前手动提交批处理的各个部分。有关详细信息,请参阅提交偏移量。
2.1.11.KafkaHeaders变化
四个常量KafkaHeaders在 2.9.x 中被弃用的现已删除。
-
而不是
MESSAGE_KEY用KEY. -
而不是
PARTITION_ID用PARTITION
同样地RECEIVED_MESSAGE_KEY替换为RECEIVED_KEY和RECEIVED_PARTITION_ID替换为RECEIVED_PARTITION.
2.1.12. 测试更改
3.0.7 版引入了MockConsumerFactory和MockProducerFactory. 有关更多信息,请参阅模拟消费者和生产者。
从版本 3.0.10 开始,默认情况下,嵌入式 Kafka 代理设置 Spring Boot 属性spring.kafka.bootstrap-servers到嵌入式代理的地址。
2.2. JsonDeserializer(自 3.0.12 起)
当发生反序列化异常时,SerializationExceptionmessage 不再包含表单Can’t deserialize data [[123, 34, 98, 97, 122, …; 每个数据字节的数值数组没有用处,对于大数据可能会很冗长。当与ErrorHandlingDeserializer这DeserializationException发送到错误处理程序包含data包含无法反序列化的原始数据的属性。当不与ErrorHandlingDeserializer这KafkaConsumer将不断为显示主题/分区/偏移量和 Jackson 抛出的原因的同一记录发出异常。