这个版本仍在开发中,目前尚未被认为是稳定的。要使用最新稳定版本,请使用 Spring for Apache Kafka 4.0.4spring-doc.cadn.net.cn

什么是新内容?

最新更新 in 3.3 自 3.2 起

本部分涵盖从版本3.2到版本3.3的更改。 更早版本的更改请参见 变更历史spring-doc.cadn.net.cn

DLT 主题命名约定

DLT主题的命名约定已标准化为始终使用"-dlt"后缀。此更改确保了兼容性,并在在不同重试解决方案之间进行转换时避免冲突。希望保留".DLT"后缀行为的用户需要通过设置适当的DLT名称属性显式选择。spring-doc.cadn.net.cn

增强消费者组的查找操作

新增了一个方法,getGroupId(),已添加到ConsumerSeekCallback接口中。 该方法通过针对仅需的消费组,实现了更选择性的seek操作。 AbstractConsumerSeekAware现在也可以在多组监听器场景下,为每个主题分区注册、检索和移除所有回调,而不会遗漏任何。 了解更多详情,请查看新的API(getSeekCallbacksFor(TopicPartition topicPartition), getTopicsAndCallbacks())。 更多信息,请查看Seek API文档spring-doc.cadn.net.cn

可配置处理Kafka监听器中的空批次(使用RecordFilterStrategy)

RecordFilterStrategy 现在支持忽略由过滤操作产生的空批次。 这可以通过重写默认方法 ignoreEmptyBatch() 配置,该方法默认为 false,确保即使所有 ConsumerRecords 被过滤掉,KafkaListener 也会被调用。 了解更多详情,请参阅 消息接收过滤文档spring-doc.cadn.net.cn

并发容器停止事件

The ConcurentContainerMessageListenerContainer 现在在所有子容器停止时发出一个 ConcurrentContainerStoppedEvent。 了解更多详情,请参见 Application EventsConcurrentContainerStoppedEvent Javadocs。spring-doc.cadn.net.cn

原始回复记录键

当使用 ReplyingKafkaTemplate 时,如果请求中的原始记录包含一个键,那么回复中也会包含该相同键。 更多信息,请参见参考文档中 发送消息 部分。spring-doc.cadn.net.cn

定制 DeadLetterPublishingRecovererFactory 的日志记录

当使用 DeadLetterPublishingRecovererFactory 时,用户应用程序可以重写 maybeLogListenerException 方法以自定义日志记录行为。spring-doc.cadn.net.cn

定制 KafkaAdmin 管理客户端

当扩展 KafkaAdmin 时,用户应用程序可以重写 createAdmin 方法以自定义 Admin 客户端创建。spring-doc.cadn.net.cn

定制 Kafka Streams 的实现

当使用 KafkaStreamsCustomizer 时,现在可以通过重写 initKafkaStreams 方法返回 KafkaStreams 接口的自定义实现。spring-doc.cadn.net.cn

KafkaHeaders.DELIVERY_ATTEMPT 对于批处理监听器

当使用一个 BatchListener 时,ConsumerRecord 的 headers 字段可以包含 KafkaHeaders.DELIVERY_ATTMPT 头部。 如果将 DeliveryAttemptAwareRetryListener 设置为错误处理程序作为重试监听器,每个 ConsumerRecord 都会包含 delivery attempt 头部。 更多详情,请参见 批量监听器的 Kafka 头部spring-doc.cadn.net.cn

Kafka 指标监听器和TaskScheduler

The MicrometerProducerListener, MicrometerConsumerListener and KafkaStreamsMicrometerListener 现在可以使用 TaskScheduler 配置。 参见 KafkaMetricsSupport JavaDocs 和 Micrometer 支持 以获取更多信息。spring-doc.cadn.net.cn