Kafka學習筆記 多執行緒開發消費者

2021-10-01 18:15:05 字數 1482 閱讀 7326

從 kafka 0.10.1.0 版本開始,kafkaconsumer 就變為了雙線程的設計,即使用者主線程心跳執行緒

所謂使用者主線程,就是你啟動 consumer 應用程式 main 方法的那個執行緒,而新引入的心跳執行緒(heartbeat thread)只負責定期給對應的 broker 機器傳送心跳請求,以標識消費者應用的存活性(liveness)。引入這個心跳執行緒還有乙個目的,那就是期望它能將心跳頻率與主線程呼叫 kafkaconsumer.poll 方法的頻率分開,從而解耦真實的訊息處理邏輯與消費者組成員存活性管理。

實際的訊息獲取邏輯依然是在使用者主線程中完成的。

乙個 runnable 類,表示執行消費獲取和消費處理的邏輯。每個 kafkaconsumerrunner 類都會建立乙個專屬的 kafkaconsumer 例項.

public class kafkaconsumerrunner implements runnable 

} catch (wakeupexception e) finally

}// shutdown hook which can be called from a separate thread

public void shutdown()

獲取訊息的執行緒可以是乙個,也可以是多個,每個執行緒維護專屬的 kafkaconsumer 例項,處理訊息則交由特定的執行緒池來做,從而實現訊息獲取與訊息處理的真正解耦。

當 consumer 的 poll 方法返回訊息後,由專門的執行緒池來負責處理具體的訊息。呼叫 poll 方法的主線程不負責訊息處理邏輯.

引用:kafka核心技術與實戰 - 胡夕

rdkafka執行緒過多 kafka 多執行緒消費

一 1 kafka的消費並行度依賴topic配置的分割槽數,如分割槽數為10,那麼最多10臺機器來並行消費 每台機器只能開啟乙個執行緒 或者一台機器消費 10個執行緒並行消費 即消費並行度和分割槽數一致。2 1 如果指定了某個分割槽,會只講訊息發到這個分割槽上 2 如果同時指定了某個分割槽和key,...

kafka 多執行緒消費

一 1 kafka的消費並行度依賴topic配置的分割槽數,如分割槽數為10,那麼最多10臺機器來並行消費 每台機器只能開啟乙個執行緒 或者一台機器消費 10個執行緒並行消費 即消費並行度和分割槽數一致。2 1 如果指定了某個分割槽,會只講訊息發到這個分割槽上 2 如果同時指定了某個分割槽和key,...

多執行緒學習筆記 執行緒

thread類 常用屬性 currentthread 獲取當前正在執行的執行緒 isalive 指示當前執行緒的執行狀態 isbackground 指示是否為後台執行緒 isthreadpoolthread 指示是否屬於託管執行緒池 managedthreadid 獲取執行緒識別符號 name 獲取...