2. 什么是新的?
2.1. 2.9 的新功能自 2.8 版本起
此部分概述了从版本2.8到版本2.9所做的更改。 对于早期版本的变更历史,请参阅变更历史。
2.1.2. 错误处理器更改
The DefaultErrorHandler 现在可以配置为暂停容器进行一次轮询,并使用上一个轮询的剩余结果,而不是跳转到剩余记录的偏移量。
有关更多信息,请参见 DefaultErrorHandler。
The DefaultErrorHandler 现在有一个 BackOffHandler 属性。
见 后退处理程序 以获取更多信息。
2.1.3. Listener Container Changes
interceptBeforeTx 现在可以与所有事务管理器一起工作(之前它仅应用于 KafkaAwareTransactionManager)。
请参见 [前置事务拦截].
pauseImmediate 是一个新的容器属性,它使容器能够在处理完当前记录后暂停消费者,而不是在上一次轮询的所有记录都被处理完毕后再暂停。
请参阅 [pauseImmediate].
事件相关的消费者身份验证和授权
2.1.4. Header Mapper 更改
您可以现在配置应该映射的入站标头。 此功能也从版本 2.8.8 开始可用。 有关更多信息,请参见 消息头。
2.1.5. KafkaTemplate变更
在3.0版本中,此类返回的未来将会是CompletableFuture秒而不是ListenableFuture秒。
请参见使用KafkaTemplate以在使用此发布版本时进行过渡。
2.1.6. ReplyingKafkaTemplate变更
The template now provides a method to wait for assignment on the reply container, to avoid a race when sending a request before the reply container is initialized.
Also available in version 2.8.8 or later.
See Using ReplyingKafkaTemplate.
在3.0版本中,此类返回的未来将变为CompletableFutures而不是ListenableFutures。
请参见使用ReplyingKafkaTemplate和带有Message<?>s的请求/回复Message<?>以在使用此版本时进行迁移。
2.2. JsonDeserializer(自 2.9.13 版本起)
当反序列化异常发生时,SerializationException消息不再包含具有形式Can’t deserialize data [[123, 34, 98, 97, 122, …的数据;每个数据字节的数值数组对于大数据来说可能没有用且很冗长。
使用ErrorHandlingDeserializer时,DeserializationException发送给错误处理程序包含data属性,该属性包含无法反序列化的原始数据。
如果不使用ErrorHandlingDeserializer,KafkaConsumer将继续为同一记录发出异常,显示主题/分区/偏移量以及由Jackson抛出的错误原因。