最新动态?
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
方法来自定义日志记录行为。
自定义 Kafka Streams 的实现
使用 KafkaStreamsCustomizer
时,现在可以通过重写 initKafkaStreams
方法返回 KafkaStreams
对象的自定义实现。
批量监听器的 KafkaHeaders.DELIVERY_ATTEMPT 头
使用 BatchListener
时,ConsumerRecord
的头部字段中可以包含 KafkaHeaders.DELIVERY_ATTMPT
头。如果错误处理器将 DeliveryAttemptAwareRetryListener
设置为重试监听器,则每个 ConsumerRecord
都会带有投递尝试次数头。有关更多详细信息,请参阅批量监听器的 Kafka 头。
Kafka 指标监听器和 TaskScheduler
MicrometerProducerListener
、MicrometerConsumerListener
和 KafkaStreamsMicrometerListener
现在可以配置 TaskScheduler
。有关更多信息,请参阅 KafkaMetricsSupport
的 JavaDocs 文档和Micrometer 支持。