开发者学堂课程【分布式消息系统 Kafka 快速入门:低级 API 之获取分区数据】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/98/detail/1617
低级 API 之获取分区数据
一、获取分区数据
获取数据需要连到具体的 leader 上来获取,也需要用到 simpleconsumer 来获取具体的数据,调用 fetch 方法。
在获取数据之前,需要找到领导,需要用到的参数就要在之前传入。
除此之外,还要将 offset 也传入进去。之后在进行获取分区 leader。
由于传入的类型不同,所以需要对 leader 进行转型。
此后连接的就是0号分区的领导。
之后调用 fetch 方法,调用方法还需要提出请求。通过 fetchrequest builder,addfetch 定义,此处定义的就是一次抓取的大小。虽然是 int 类型,但此处指的是缓存大小,所以不能根据参数类型误解此处含义。
int 不是条数,是字节数。而字节数大小一般用 long 定义,但此处特殊。
用 bild 的构建,返回的是 fetchrequest ,以下为创建获取数据的对象代码。
在解析时,还需要传入具体需要的分区数据。因为在请求当中可以放多个 Partition,解析时就需要进行具体传入。
实现以下步骤才获得了一条条的数据。
遍历获取数据之后对每条数据进行打印,每次都是从传进来的 offset 中进行获取,如果想做成与高级 api 相同的效果,就需要在 offset 拿到之后将其保存下来,在下次创建请求之前,先把 offset 获取到,至于 offset 的保存位置是不固定的。
过程总结为获取分区 leader ,获取数据的消费者对象,创建获取数据的对象,获取数据返回值,解析返回值,遍历并打印。