Kafka 讀取不到數據,沒有報錯信息

 現象:php

         kafka寫入和消費一切正常狀況,經過一段時間的運行,偶爾發現取不到數據;最後查看kafka消費狀況,發現有阻塞。html

解決:java

一、確認kafka運行狀況,是否有堵塞負載均衡

/kafka/bin/目錄下執行ui

./kafka-run-class.sh kafka.tools.ConsumerOffsetChecker --zookeeper=localhost2181 --group=0url

被網上一些代碼片斷坑騙  ~~~~(>_<)~~~~  設計

二、檢查代碼server

    我出現的問題,通過確認後發現,全部topic 的group.id都是同樣的名稱htm

三、 不一樣的topic 設置不一樣的group.idget

 Consumers

    本質上kafka只支持Topic.每一個consumer屬於一個consumer group;反過來講,每一個group中能夠有多個consumer.發送到Topic的消息,只會被訂閱此Topic的每一個group中的一個consumer消費.

 

    若是全部的consumer都具備相同的group,這種狀況和queue模式很像;消息將會在consumers之間負載均衡.

    若是全部的consumer都具備不一樣的group,那這就是"發佈-訂閱";消息將會廣播給全部的消費者.

    在kafka中,一個partition中的消息只會被group中的一個consumer消費;每一個group中consumer消息消費互相獨立;咱們能夠認爲一個group是一個"訂閱"者,一個Topic中的每一個partions,只會被一個"訂閱者"中的一個consumer消費,不過一個consumer能夠消費多個partitions中的消息.kafka只能保證一個partition中的消息被某個consumer消費時,消息是順序的.事實上,從Topic角度來講,消息仍不是有序的.

 

    kafka的設計原理決定,對於一個topic,同一個group中不能有多於partitions個數的consumer同時消費,不然將意味着某些consumer將沒法獲得消息.

因此不用在意consumer的多少,要保證consumer的消費來至同一個訂閱者,也就是一個consumer對應一個group;若是多個consumer來同時設置同一個group,是取不到數據的;

    group.id 是自定義的。

相關文章
相關標籤/搜索