Kafka Java Consumer设计原理
Kafka Consumer API中最重要的, 当属它的入口类KafkaConsumer. KafkaConsumer是双线程设计, 即用户主线程和心跳线程.
用户主线程: 启用Consumer应用程序的县城.
心跳线程: 负责定期给对应的Broker机器发送心跳请求, 以标识消费者应用的存活性. 它的目的之一, 期望它能将心跳频率与主线程调用KafkaConsumer.poll方法的频率分开, 从而解耦真实的消息处理逻辑与消费者组成员存活性管理.
多线程方案
基于KafkaConsumer不是线程安全的事实, 我们能够制定两套多线程方案.
-
消费者程序启动多个线程, 每个线程维护专属的KafkaConsumer实例, 负责完整的消息获取、消息处理逻辑.
-
消费者程序使用单或多线程获取消息, 同时创建多个消费线程执行消息处理逻辑.
此文章为3月Day19学习笔记, 内容来源于极客时间《Kafka核心技术与实战》, 强烈推荐该课