最新動態?
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 支援。