[英]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.