最新动态?

3.3 版本相对于 3.2 版本的新特性

本节介绍从 3.2 版本到 3.3 版本所做的更改。有关早期版本的更改,请参阅变更历史

DLT 主题命名约定

DLT 主题的命名约定已标准化,统一使用“-dlt”后缀。此更改可确保兼容性,并避免在不同重试方案之间切换时发生冲突。希望保留“.DLT”后缀行为的用户需要通过显式设置相应的 DLT 名称属性来启用此功能。

增强的消费者组 Seek 操作

ConsumerSeekCallback 接口新增了 getGroupId() 方法。此方法可以通过仅针对所需的消费者组来实现更具选择性的 Seek 操作。AbstractConsumerSeekAware 现在也可以在多组监听器场景中为每个主题分区注册、检索和移除所有回调而不会遗漏。有关更多详细信息,请参阅新的 API (getSeekCallbacksFor(TopicPartition topicPartition)getTopicsAndCallbacks())。有关更多详细信息,请参阅Seek API 文档

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

RecordFilterStrategy 现在支持忽略过滤后产生的空批次。这可以通过重写默认方法 ignoreEmptyBatch() 进行配置,该方法默认为 false,以确保即使所有 ConsumerRecords 都被过滤掉,也会调用 KafkaListener。有关更多详细信息,请参阅消息接收过滤文档

ConcurrentContainerStoppedEvent

ConcurentContainerMessageListenerContainer 现在在其所有子容器停止时会发出一个 ConcurrentContainerStoppedEvent 事件。有关更多详细信息,请参阅应用事件ConcurrentContainerStoppedEvent 的 Javadoc 文档。

回复中的原始记录键

使用 ReplyingKafkaTemplate 时,如果请求中的原始记录包含键 (key),则该键也会成为回复的一部分。有关更多详细信息,请参阅参考文档的发送消息部分。

在 DeadLetterPublishingRecovererFactory 中自定义日志记录

使用 DeadLetterPublishingRecovererFactory 时,用户应用可以重写 maybeLogListenerException 方法来自定义日志记录行为。

在 KafkaAdmin 中自定义 Admin 客户端

扩展 KafkaAdmin 时,用户应用可以重写 createAdmin 方法来自定义 Admin 客户端的创建。

自定义 Kafka Streams 的实现

使用 KafkaStreamsCustomizer 时,现在可以通过重写 initKafkaStreams 方法返回 KafkaStreams 对象的自定义实现。

批量监听器的 KafkaHeaders.DELIVERY_ATTEMPT 头

使用 BatchListener 时,ConsumerRecord 的头部字段中可以包含 KafkaHeaders.DELIVERY_ATTMPT 头。如果错误处理器将 DeliveryAttemptAwareRetryListener 设置为重试监听器,则每个 ConsumerRecord 都会带有投递尝试次数头。有关更多详细信息,请参阅批量监听器的 Kafka 头

Kafka 指标监听器和 TaskScheduler

MicrometerProducerListenerMicrometerConsumerListenerKafkaStreamsMicrometerListener 现在可以配置 TaskScheduler。有关更多信息,请参阅 KafkaMetricsSupport 的 JavaDocs 文档和Micrometer 支持