|
对于最新稳定版本,请使用Spring for Apache Kafka 4.0.4! |
什么是新内容?
自 3.1 版本以来的新功能
此部分概述了从版本 3.0 到版本 3.1 的更改。 较早版本的变更,请参阅 变更历史记录。
嵌入式Kafka Brokers
现在提供了一个额外的实现,可以使用Kraft而不是Zookeeper。
更多信息请参见嵌入式Kafka代理。
JsonDeserializer
当反序列化异常发生时,SerializationException消息不再包含具有形式Can’t deserialize data [[123, 34, 98, 97, 122, …的数据;每个数据字节的数值数组对于大数据来说可能没有用且很冗长。
使用ErrorHandlingDeserializer时,DeserializationException发送给错误处理程序包含data属性,该属性包含无法反序列化的原始数据。
如果不使用ErrorHandlingDeserializer,KafkaConsumer将继续为同一记录发出异常,显示主题/分区/偏移量以及由Jackson抛出的错误原因。
ContainerPostProcessor
post processing 可以通过在 @KafkaListener 注解中指定一个 ContainerPostProcessor 的 bean 名称来应用到监听器容器上。这发生在容器创建之后,并且在容器工厂中配置的任何 ContainerCustomizer 都已经配置好之后。
更多详细信息,请参阅 容器工厂。
错误处理反序列化器
您现在可以在这个反序列化器中添加一个Validator; 如果代理Deserializer成功地反序列化了对象,但该对象验证失败,则会抛出类似反序列化异常的错误。
这使得原始数据能够传递给错误处理器。参见使用ErrorHandlingDeserializer获取更多信息。
重试主题
将后缀-retry-5000改为-retry时,请在@RetryableTopic(backoff = @Backoff(delay = 5000), attempts = "2", fixedDelayTopicStrategy = FixedDelayStrategy.SINGLE_TOPIC)处操作。
若要保持后缀-retry-5000,请使用@RetryableTopic(backoff = @Backoff(delay = 5000), attempts = "2")。
更多信息请参见主题命名。
监听器容器变更
当手动分配分区时,使用一个null消费者group.id,现在的AckMode会自动转换为MANUAL。
有关更多信息,请参阅手动分配所有分区。