赞
踩
历时两天终于将kafka环境搭建好,并将librdkafka的库编译好,踩过很多坑,特在此记录以下。
搭建Kafka环境主要包含三步:
安装完记得配置环境,可参考博文:https://blog.csdn.net/houwanle/article/details/81773832
Kafka的运行依赖于Zookeeper,所以在运行Kafka之前我们需要安装并运行Zookeeper
下载文件:http://zookeeper.apache.org/releases.html 如我下载的文件:zookeeper-3.4.14.tar.gz
(1)解压zookeeper 到 D:\zookeeper-3.4.14 目录
打开:D:\zookeeper-3.4.14\conf,把zoo_sample.cfg复制一份,并重命名成zoo.cfg ,打开zoo.cfg文件(我用的notepad++打开的此文件),找到如下信息并做修改
把dataDir的值改成“./zookeeper-3.4.14/data”
(2)添加zookeeper环境变量
ZOOKEEPER_HOME:D:\zookeeper-3.4.14
Path中新建,添加;%ZOOKEEPER_HOME%\bin
(3)运行zookeeper
(4)打开cmd命令窗口 执行 zkserver
注意:这里的cmd窗口不要关闭
3.1 下载安装文件: http://kafka.apache.org/downloads.html 并解压到D:\kafka_2.11-2.3.0
3.2 打开kafka_2.11-2.3.0\config
3.3 从Notepad++里打开 server.properties
3.4 把 log.dirs的值改成 “./logs”
3.6 重新打开一个cmd,进入kafka文件目录: d:
然后 cd D:\kafka_2.11-2.3.0(kafka目录)
3.7 输入并执行: .\bin\windows\kafka-server-start.bat .\config\server.properties
注意:这里的cmd窗口不要关闭
在测试环节,创建一个Topic(主题)、一个producer(生产者)、以及一个consumer(消费者)
4.1 创建一个Topic主题
打开cmd 并进入cd D:\kafka_2.11-2.3.0\bin\windows
创建一个topic,在cmd中输入:(一个分区,一个备份,主题名为test)
kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
此时kafka server的窗口会输出创建topics的一些信息,如下图
4.2 打开一个生产者
- 新建一个终端:cd D:\kafka_2.11-2.3.0\bin\windows
- 输入:kafka-console-producer.bat --broker-list localhost:9092 --topic test
4.3 创建一个消费者
- 新建一个终端:cd D:\kafka_2.11-2.3.0\bin\windows
- 输入:kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test --from-beginning
注意:这里的--from-beginning表示从头开始将生产者生产的内容显示出来,很明显,下图中包含了一些之前生成的信息。其中的中文是乱码了。
参考博文: https://www.cnblogs.com/lnice/p/9668750.html (强烈推荐)
在搭建好Kafka以及完成环境配置后,后面进行librdkafk库的编译。
说明:
不管是通过cmd创建消费者生产者传递消息还是通过编程创建生成者消费者传递消息,下面两个窗口不要关掉。
也就是说,在编程的时候先要通过cmd运行zkserver和.\bin\windows\kafka-server-start.bat config\server.properties,后面运行指令需要先进入到kafka的压缩目录,如上面红色框所示。
参考博文:https://blog.csdn.net/qq_18305555/article/details/100165908
编译主要分为如下几个步骤:
1)下载安装编译必须的ActivePerl:【链接: https://pan.baidu.com/s/1mfAB5SyI1aeo-VmrvuBNeQ 密码: 4uvw】
直接下载安装,进入cmd命令输入:perl -version,如果有perl版本信息输出则正常,否则需要添加环境变量:C:\Perl64\site\bin;C:\Perl64\bin;(C:\Perl64是安装目录)
2)下载openssl源码:https://www.openssl.org/source/ 之前使用了很多版本都不行(主要是在动态链接库一直配置不成功),不推荐使用最新的版本。下面这是我推荐的版本:openssl-1.0.2o.tar.gz,然后解压备用,放置的目录最好不要带有空格或中文(这是一直以来的习惯,因为有些库编译会因为这个原因出问题)
注意:之前下载的是openssl的exe版本,直接安装到了电脑,这里并不是下载exe版本,而是下载一个压缩文件.tar.gz文件,将其解压,我放到了这个目录:D:\kafka_2.11-2.3.0\openssl-1.0.2o
我使用的是64位版本
以下所有操作都是在【VS2013本机工作命令提示】中进行的,具体位置一般是【开始->所有程序->Visual Studio 2015-> Visual Studio Tools】下;打开如下图
在里面输入:vcvars64.bat
3.1 首先,在当前的cmd中进入D:\kafka_2.11-2.3.0\openssl-1.0.2o目录,
然后,配置输出目录和编译类型【编译32位、64位;release、debug有区别】 ,我这里配置的是64位;release版本
命令格式如下:
注意:输出目录用双引号括起来
3.2 执行命令配置编译生成目录在D:\kafka_2.11-2.3.0\win32\openssl_build,没有该目录需要手动新建好
输入:perl Configure VC-WIN64A no-asm --prefix="D:\kafka_2.11-2.3.0\win32\openssl_build"
[输出目录]理论任何地方都可以。自己确定好就行
no-asm 即为去掉汇编
3.3 配置模式,命令如下:
ms\do_win64a.bat
执行这一步之后,在ms目录下会生成nt.mak和ntdll.mak两个编译配置文件
nt.mak 用于生成静态lib库
ntdll.mak 用于生成动态dll库
3.4 编译【编译静态库、动态库有区别】
nmake -f ms\nt.mak
nmake -f ms\nt.mak test
nmake -f ms\nt.mak install
【编译openssl动态链接库】
命令如下:
nmake -f ms\ntdll.mak
nmake -f ms\ntdll.mak test
nmake -f ms\ntdll.mak install
执行test命令可以测试编译好的库,测试成功了就可以运行install命令,运行完之后才会在输出目录中找到输出的编译好的库和加入工程时必要的include文件。
提示:如果编译失败,尝试:
清除上次OpenSSL动态库的编译,以便重新编 译:nmake -f ms\ntdll.mak clean 清除上次OpenSSL静态库的编译,以便重新编译:nmake -f ms\nt.mak clean
说明:之前我使用其他的openssl文件,在配置静态链接库还正常,在配置动态链接库时却出现问题了,尝试了几个,最终这个版本的可以成功:openssl-1.0.2o.tar.gz
注意:设置VC编译环境的时候,注意有32位和64位的区别,网络上大多数是因为没有注意这个导致编译失败。
librdkafka下载地址:https://github.com/edenhill/librdkafka
1.解压下载后的源码,进入win32目录,使用vs2013打开librdkafka.sln解决方案。或者直接双击
2.配置openssl库与头文件目录
编译librdkafka项目,配置openssl与lib。
添加头文件:在包含目录中,添加 D:\kafka_2.11-2.3.0\win32\openssl_build\include
添加lib:进入库目录添加:D:\kafka_2.11-2.3.0\win32\openssl_build\lib
这里有个地方要注意下,默认使用的是libeay32MT.lib与ssleay32MT.lib。这里将名字中去掉MT,保存如下图所示,编译即可通过。但是我在编译的时候却遇到了错误:提示没有opencv_world341.lib(一脸懵逼),解决办法在下面:
遇到的缺少opencv_world341.lib这个,说实话我也不知道啥情况,然后我还是去opencv官网将opencv3.4.1下载下来了,并配置了下环境,参考博文:https://blog.csdn.net/weixin_41147129/article/details/88361133(感谢)
主要步骤:
(1)打开浏览器https://opencv.org/releases.html
我选择的是3.4.1的window版本,下载安装选择目录,其实安装就是解压,注意不需要再创个opencv文件夹了,加压后就是opencv文件夹。
(2)配置opencv
1)配置Path系统环境变量
此电脑–>右键“属性”–>高级系统设置–>环境变量–>系统变量中的path,在变量值里面添加相应的路径; D:\opencv\build\x64\vc14\bin (配置动态链接库,注意自己的路径)
,如果没有完成这一步,在工程运行时会提示找不到“opencv_world341d.dll”文件的错误的
2)VS2013中配置OpenCV
直接在需要的工程中添加,如librdkafka,
在librdkafka工程中右击–>属性
包含目录 + 库目录 + 链接器(release x64)
包含目录 配置:
VC++目录—>包含目录:
D:\opencv\build\include ;
D:\opencv\build\include\opencv;
D:\opencv\build\include\opencv2
库目录 配置:
VC++目录—>库目录:
D:\opencv\build\x64\vc14\lib
注意:(1)此处的x64表示电脑是64位,32位选择x86
配置好后,在编译就成功了。
5 测试
编译完librdkafka项目后,可以逐一编译其他项目,这里拿客户端编译做测试。
编译成功后生成文件在目录win32\outdir\v120\x64\Release中
我们在本机开启一个topic为test的生产者,然后使用本测试程序消费者进行通信测试。
该程序需要在命令行界面打开。
根据参数提示,执行以下命令:
想要看效果,可以自己在一个cmd终端中创建一个生产者,
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。