Librdkafka要和kakfa集群通讯, 网络操作肯定是少不了的,这就需要封装transport数据传输层;
Librdkafka毕竟是SDK, 作为访问kafka集群的客户端,不需要支持大并发,...在网络IO模型 上选用了 poll;
IO模型确定后, 发送和接收数据必不可少的缓冲区buffer, 我们前面已经介绍过, 请参考Librdkafka的基础数据结构 3 -- Buffer相关 ;
以上介绍的...librdkafka中的poll模型和buffer, 完全可以独立出来, 用在其他项目上, 作者封装得很好;
Librdkafka与kafka broker间是tcp连接, 在接收数据后就涉及到一个拆包组包的问题...,拿到payload长度, 再根据这个长度收够payload内容, 这样一个完整的response就接收到了;
下面我们来结合代码分析一下, 其中有一部分是windows下的实现代码,我们将忽略掉
-...}
rd_kafka_recv按kafka的协议来收包, 先收4字节,拿到payload长度, 再根据这个长度收够payload内容, 这样一个完整的response就接收到了
有可写事件