2. 新增功能
2.1. 自 2.9 以来 3.0 中的新增功能
本节介绍从版本 2.9 到版本 3.0 所做的更改。 有关早期版本的更改,请参阅更改历史记录。
2.1.3. 观察
现在支持使用 Micrometer 对计时器启用观察和跟踪。 有关更多信息,请参阅千分尺观测。
2.1.4. 原生镜像
支持创建本机映像。 有关更多信息,请参阅本机映像。
2.1.5. 全局单嵌入式 Kafka
嵌入式 Kafka (EmbeddedKafkaBroker
) 现在可以作为整个测试计划的单个全局实例启动。
有关更多信息,请参阅对多个测试类使用相同的 Broker(s)。
2.1.6. 可重试主题更改
此功能不再被视为实验性功能(就其 API 而言),该功能本身自 2.7 以来一直受支持,但破坏 API 更改的可能性比正常情况更大。
在此版本中,非阻塞重试基础结构 bean 的引导已更改,以避免在某些应用程序中发生的有关应用程序初始化的一些计时问题。
您现在可以设置不同的concurrency
对于重试容器;默认情况下,并发性与主容器相同。
@RetryableTopic
现在可以用作自定义注释上的元注释,包括对@AliasFor
性能。
有关更多信息,请参阅配置。
重试主题的默认复制因子现在为-1
(使用 broker default)。
如果您的代理版本低于 2.4,则现在需要显式设置该属性。
您现在可以配置多个@RetryableTopic
同一应用程序上下文中同一主题的侦听器。
以前,这是不可能的。
有关更多信息,请参阅多个侦听器,相同主题。
中存在重大 API 更改RetryTopicConfigurationSupport
;具体来说,如果你覆盖了destinationTopicResolver
,kafkaConsumerBackoffManager
和/或retryTopicConfigurer
;
这些方法现在需要一个ObjectProvider<RetryTopicComponentFactory>
参数。
2.1.7. 侦听器容器更改
与使用者身份验证和授权失败相关的事件现在由容器发布。 有关更多信息,请参阅应用程序事件。
您现在可以自定义使用者线程使用的线程名称。 有关更多信息,请参阅容器线程命名。
container 属性restartAfterAuthException
已添加。
有关更多信息,请参阅 Listener Container Properties (侦听器容器属性)。
2.1.8.KafkaTemplate
变化
该类返回的 future 现在是CompletableFuture
s 而不是ListenableFuture
s.
看用KafkaTemplate
.
2.1.9.ReplyingKafkaTemplate
变化
该类返回的 future 现在是CompletableFuture
s 而不是ListenableFuture
s.
看用ReplyingKafkaTemplate
和请求/回复Message<?>
s.
2.1.10.@KafkaListener
变化
您现在可以使用自定义关联标头,该标头将在任何回复消息中回显。
请参阅末尾的注释用ReplyingKafkaTemplate
了解更多信息。
现在,您可以在处理整个批次之前手动提交批次的各个部分。 有关更多信息,请参阅提交偏移量。
2.1.11.KafkaHeaders
变化
4 个常量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
.
有关更多信息,请参阅 Mock Consumer 和 Producer。
从版本 3.0.10 开始,默认情况下,嵌入式 Kafka 代理会设置 Spring Boot 属性spring.kafka.bootstrap-servers
到嵌入式经纪人的地址。
2.2. JsonDeserializer(自 3.0.12 起)
当反序列化异常发生时,SerializationException
message 不再包含格式为Can’t deserialize data [[123, 34, 98, 97, 122, …
;每个数据字节的数值数组没有用,对于大数据来说可能很详细。
当与ErrorHandlingDeserializer
这DeserializationException
sent to 错误处理程序包含data
属性,其中包含无法反序列化的原始数据。
当不与ErrorHandlingDeserializer
这KafkaConsumer
将持续为同一记录发出异常,显示 topic/partition/offset 和 Jackson 抛出的原因。