簡體   English   中英

來自 kafka 主題的消息的動態消費

[英]Dynamic consumption of messages from a kafka topic

我需要使用生產者動態創建的主題中的消息。 我已經在消費者@KafkaListener(topicPattern = "topicname_.*") 中使用了主題模式方法,並且還設置了 metadata.max.age.ms=3000。但顯然除非和直到我設置了 offset.auto.reset最早我無法做到這一點。在我們的要求中,必須將 offset.auto.reset 設置為 latest 以避免問題重復。

關於如何實現相同的任何想法?

在頂層說,Kafka 的設計理念不允許這樣的事情,因為在運行時添加主題會導致代理的重新平衡,因此必須避免這種情況,但是如果我們每次都有新主題時都設法重新啟動消費者組被添加到列表中,我們可以優雅地避免這種危害。

最新的 Spring-Kafka 集成及其用法包括注釋@KafkaListener ,它通過使用傳遞給它的容器工廠創建 KafkaListenerContainer 將您的 POJO 偵聽器轉換為 Kafka 消費者。 該消費者將主題硬編碼為主題、主題表達式、主題模式等的字符串數組。這限制了我們的設計,只能通過 Java DSL 最大程度地獲取這些主題作為鍵,而不是直接硬編碼。 但是,鍵仍然硬編碼在作為參數傳遞給@KafkaListener的數組中。

例子:

@KafkaListener(topics = {“${kafka.topics.receipt.cancel.name}”}, containerFactory = “kafkaContainerFactory”)

注意:注釋屬性 KafkaListener.topics 的值必須是一個數組初始值設定項,因此硬編碼是強制性的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM