簡體   English   中英

服務不使用來自 AWS Kafka 集群上所有主題消費者組的消息

[英]service not consume message from all topic consumer group on AWS Kafka Cluster

我對 AWS 和 Kafka 集群非常陌生。

我們有NodeJs服務,它連接到兩個不同的Kafka cluster 我們有多個消費者服務實例,每個實例都使用每個主題的記錄,但從過去幾周開始,我們發現服務(消費者)沒有從訂閱主題列表中的每個主題消費消息,這組主題每次都不同. 我們有 5 個不同的aws主機用於消費者服務。 當我運行describe consumer group command時,我看到一些主題沒有附加任何消費者。 每次這個未分配的消費者主題列表都是不同的。

我很抱歉再次更新問題,但是在調試問題時發現了這個新問題。

代碼

 KafkaProcessor.subscribetotopic = async (topic) => {
  const consumer = KafkaService.getConsumer(consumer);
  const message = {
   topic,
   fromBeginning: true,
  };
  await consumer.subscribe(message);
  logger.info(`Successfully subscribed to topic ${topic}`);
};

KafkaProcessor.subscribetotopiclist = async (topiclist) => {
 const promises = [];
 for (const topic of topiclist) {
  promises.push(KafkaProcessor.subscribetotopic(topic));
 }
 await Promise.all(promises);
 logger.info(`Successfully subscribed to topic ${topiclist.join()}`);
};

調試此問題的更好方法是使用 ConsumerGroupCommand 工具檢查您的消費者組。 這將使您更好地了解您的消費者實例。

 bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group my-group

--members --verbose :在上面的“--members”選項報告的信息之上,這個選項還提供了分配給每個成員的分區。

bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group my-group --members

bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group my-group --members –verbose

您確定要推出 5 個不同的消費者嗎?

問題在於,實際上,您只啟動了一個訂閱所有主題的消費者線程。

const consumer = KafkaService.getConsumer(consumer); //always returns the same 

檢查describe-groups輸出的consumer-id字段:我確定所有主題的 consumer-id 都是相同的。 這意味着一個線程必須讀取每個主題的所有分區。 如果您等待足夠長的時間(可能是幾個小時),您可能會看到所有主題都在閱讀(最后)。

https://www.tutorialsbuddy.com/images/single-kafka-consumer.png

您的消費者正在這樣做乘以您擁有的主題數量......只是沒有足夠的資源來同時讀取所有主題。

應該將循環中的const consumer分配給一個新的 KafkaConsumer,以便您實際擁有 5 個消費者線程

像這樣的東西(我不知道KafkaService,只是把它當作偽代碼)

const consumer = KafkaService.createConsumer(consumerParams);
//consumerParams being group.id, etc

暫無
暫無

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

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