跳到主要内容

有什么新内容?

ChatGPT-4o-mini 中英对照 What’s new?

3.3 中的新特性,自 3.2 以来

本节涵盖了从版本 3.2 到版本 3.3 的更改。有关早期版本的更改,请参见 Change History

DLT 主题命名约定

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

增强的消费者组查找操作

ConsumerSeekCallback 接口中添加了一个新方法 getGroupId()。该方法允许通过仅针对所需的消费者组来进行更具选择性的查找操作。AbstractConsumerSeekAware 现在还可以在多组监听器场景中注册、检索和移除每个主题分区的所有回调,而不会遗漏任何回调。有关更多详细信息,请参见新 API (getSeekCallbacksFor(TopicPartition topicPartition)getTopicsAndCallbacks())。有关更多详细信息,请参见 Seek API Docs

可配置的空批处理处理在 Kafka 监听器中与 RecordFilterStrategy

RecordFilterStrategy 现在支持忽略因过滤而产生的空批次。可以通过重写默认方法 ignoreEmptyBatch() 来进行配置,默认值为 false,确保即使所有 ConsumerRecords 都被过滤掉,KafkaListener 仍然会被调用。有关更多详细信息,请参见 Message receive filtering Docs

ConcurrentContainerStoppedEvent

ConcurentContainerMessageListenerContainer 现在在其所有子容器停止时发出 ConcurrentContainerStoppedEvent。有关更多详细信息,请参见 Application EventsConcurrentContainerStoppedEvent Javadocs。

原始记录键在回复中

当使用 ReplyingKafkaTemplate 时,如果请求中的原始记录包含一个键,那么该键也将成为回复的一部分。有关更多详细信息,请参见参考文档中的 Sending Messages 部分。

自定义 DeadLetterPublishingRecovererFactory 中的日志记录

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

Customize Admin client in KafkaAdmin

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

自定义 Kafka Streams 的实现

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

KafkaHeaders.DELIVERY_ATTEMPT 用于批量监听器

当使用 BatchListener 时,ConsumerRecord 的头部字段中可以包含 KafkaHeaders.DELIVERY_ATTMPT 头。如果将 DeliveryAttemptAwareRetryListener 设置为错误处理程序作为重试监听器,则每个 ConsumerRecord 都会有交付尝试头。有关更多详细信息,请参见 Kafka Headers for Batch Listener

Kafka 指标监听器和 TaskScheduler

MicrometerProducerListenerMicrometerConsumerListenerKafkaStreamsMicrometerListener 现在可以使用 TaskScheduler 进行配置。有关更多信息,请参见 KafkaMetricsSupport 的 JavaDocs 和 Micrometer Support