librdkafka是kafka官方推荐的c client端开源库。本文基于librdkafka_0.8, 对该库作简要介绍,同时对使用过程中遇到的一些问题做个总结
一、模块介绍
librdkafka主要分为config,topic,produce,consume几个模块
config
依据kafka相应的config文件字段定义
先通过默认配置文件创建confg对象,再通过confg的set方法设置需要覆盖的字段
参考: http://blog.csdn.net/beitiandijun/article/details/40582541
topic
支持一个producer创建多个topic(比如bid,wn等类型的日志)
创建主题方法rd_kafka_topic_new逻辑:
检查是否有同名可用topic ==> 检查tconf为空则以默认配置创建 ==>
检查partitioner未配置则配置为随机方法(从0,pcnt-1中选取partition) ==> 创建分区号为默认值RD_KAFKA_PARTITION_UA 的分区,并将topic插入队尾
partitioner类回调方法需自己实现
produce
kafka对象创建方法
rd_kafka_t *rd_kafka_new (rd_kafka_type_t type, rd_kafka_conf_t *conf,
char *errstr, size_t errstr_size)
1
2
1
2
检查config对象,创建事件循环主线