簡體   English   中英

在同一個消費者類中使用多個kafka主題

[英]Consuming multiple kafka topics in the same consumer class

我有一個spring boot項目,我是spring-kafka連接到底層的kafka事件中心。

我必須在同一個消費者類中聽兩個不同的主題。 我有兩種方法可以做到這一點。

一個是有兩個像這樣的kafka聽眾:

 @KafkaListener(topics = "topic1")
public void consumeTopic1(String message) throws Exception {  
   //do something
  }

 @KafkaListener(topics = "topic2")
public void consumeTopic2(String message) throws Exception {  
   //do something
  }

另一種方法是在同一個kafkaListener中有2個主題

 @KafkaListener(topics = {"topic1", "topic2"})
public void consumeTopics(String message) throws Exception {  
   //do something
  }

由於我是kafka的新手,我不確定這兩種方法之間有什么區別。 哪一個是高效的,資源有效的。

我想知道的一件事是它會在兩種方法中監聽單個線程上的主題,還是會產生一個線程來監聽這些主題。

使用方法1,我遇到了消費者的麻煩,我發現主題消費有些延遲。

請根據您的經驗建議我,因為我對卡夫卡很新

===============編輯======== Kafka屬性在application.yml中如下:

 kafka:
    properties:
      topics:
        topic1: topic1
        topic2: topic2
    bootstrap-servers: server1,server2
    producer:
      key-serializer: org.apache.kafka.common.serialization.StringSerializer
      value-serializer: org.springframework.kafka.support.serializer.JsonSerializer
      retries: 4
    consumer:
      group-id: mygroupid
      auto-offset-reset: latest
      key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
      value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
  • 創建多個主題的目的是傳播數據,以及
    隨后,跨越多個數據的處理
    核/進程/線程。

  • 即使這樣,您也可以從單個消費者開始處理多個主題,直到在處理隊列中的事件時發現延遲。 然后你可以將它們分開。

暫無
暫無

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

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