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