C-C++|Linux下librdkafka编译安装使用学习

Kafka分为服务端和客户端,服务端集群一般称为brokers,客户端分为生产者(producer)和消费者(consumer)。
开发者通常用客户端从kafka生产消息或消费消息,不同的语言使用不同的客户端,具体信息参见这个页面:

https://cwiki.apache.org/confluence/display/KAFKA/Clients

我使用的是C++开发的客户端:librdkafka
此处获取各个Realease版本:
https://github.com/edenhill/librdkafka/releases

下载一个 librdkafka-0.11.6.tar.gz 包,到开发环境上, 放到自己使用的目录下。
1、解压
tar -xzvf librdkafka-0.11.6.tar.gz

2、进入解压后的目录,指定安装环境。我这里只是指定了安装目录。
cd librdkafka-0.11.6 ./configure --prefix=/home/luobg/study/librdkafka

这里只是用 --prefix选项指定了安装目录,目录为/home/luobg/study/librdkafka,也可以不指定目录,默认安装路径为/usr/local/librdkafka。
3、make编译
make -j4

make 后面的 -j4 是
开启四个线程同时编译的意思,这里的-jN这个数字N看各自的开发环境而定,一般4个线程是稳妥的。
4、安装
sudo make install

如果一切安装顺利的话,最后可以进入librdkafka-0.11.6的目录下,查看librdkafka支持的一些特性
./rdkafka_example -X builtin.features

我的结果为:
builtin.features = gzip,snappy,ssl,sasl,regex,lz4,sasl_plain,sasl_scram,plugins

像sasl,sasl_plaintext是连接带鉴权的kafka需要用到的。如果需要这些特性那么在编译librdkafka之前就要做相应的依赖库安装。

关于librdkafka的使用。
编写C++程序就是包含 rdkafkacpp.h 头文件,在安装目录的include目录下,编译自己的程序的时候链C++的库 -lrdkafka++, 还要链接线程库 -lpthread
编写C程序就是包含 rdkafka.h 头文件,编译自己的程序的时候就是链接C的库 -lrdkafka, 以及线程库 -lpthread
具体使用代码,留在其他篇目记录。

另外,librdkafka需要的gcc版本是比较高的,应该是越高越好,不然会在编译过程中出现奇怪的报错问题。

如果不是安装到默认路径下的话,而且你也不是root用户,那么就需要对当前用户家目录下的 .bash_profile 进行配置,方便使用。
1、返回当前用户家目录
cd ~

2、编辑.bash_profile ,#这里,如果没有这个文件就创建
vim .bash_profile

这里编辑运行时库路径LD_LIBRARY_PATH,,以及编译时链接库路径LIBRARY_PATH,头文件包含路径。一定不要忘记最后的:$LD_LIBRARY_PATH以及:$LIBRARY_PATH,其中冒号 ":"标识变量之间的隔开,类比Windows下的分号"; "。/home/luobg/study/librdkafka/lib 是之前librdkafka的安装下的lib目录.
#运行时库路径 export LD_LIBRARY_PATH=/home/luobg/study/librdkafka/lib:$LD_LIBRARY_PATH #编译时链接库路径 export LIBRARY=/home/luobg/study/librdkafka/lib:$LIBRARY_PATH #C++头文件包含路径 export CPLUS_INCLUDE_PATH=/home/luobg/study/librdkafka/include:$CPLUS_INCLUDE_PATH #C头文件包含路径 export C_INCLUDE_PATH=/home/luobg/study/librdkafka/include:$C_INCLUDE_PATH

【C-C++|Linux下librdkafka编译安装使用学习】编辑完成保存退出记得 source ./.bash_profile 生效。

    推荐阅读