Java Consumer原理
- 使用者主線程:啟動Consumer應用程式main方法的那個線程
- 心跳線程:定期給對應的Broker機器發送心跳請求,辨別消費者的存活性
引入兩個線程的目的是将消息的處理邏輯和消費者組成員存活性管理進行解耦
在消費層面上,還是可以認為Comsumer是單線程的設計
兩種方案
多線程,多執行個體
消費者啟動多個線程,每個線程維護專屬的KafkaConsumer執行個體,負責完整的消息擷取,處理流程
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHLzsmaOBTWE9keJpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLyQTO5ETOzgDM3AjMxAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
擷取消息與處理消息分離
- 使用單或多個線程擷取消息
- 同時建立多個消費線程執行消息處理邏輯。
Kafka多線程開發消費者執行個體的兩種方案