Kafka Consumer底层原理分析【Kafka系列】
虽然目前Kafka0.10版本已经重写了其API,但底层原理是类似的,所以我们可以先了解kafka0.8.x里面的提供的Consumer的实现原理与交互流程 Kafka提供了两套API给Consumer The SimpleConsumer API The high-level Consumer API 1. 低阶API 本质上是提供了一种与broker交互信息的API 剩下的处理全靠用户自己的程序,功能比较简单,但用户扩展性比较强 1) API结构 低阶API的consumer,指定查找topic某个partition的指定offset去消费 首先与broker通信,寻找到leader(不与zookeeper通信,不存在groupid), 然后直接和 leader 通信,指定 offset 去消费。消费多少,从哪里开始消费,都可控 (我们的例子是从 0 开始消费) findLeader方法中会去调用findPartitionMetadata方法 程序运行结果: 运行过程中一直卡住没有成功消费,加入如下错误信息判断,发现error code为1 说明我们从offset 0消费offsetoutofrange了 (我们发送请求topic1 partition0的offset 0 broker回复我们offset out of range,因为kafka中已经没有offset 0