Linux下librdkafka编译安装使用学习

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/naughfy/article/details/84649252

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

编辑完成保存退出记得 source ./.bash_profile 生效。

展开阅读全文

没有更多推荐了,返回首页