前记:墨迹了几天,仍是云里雾里。记录下kafka启动过程,适合傻瓜新手,想弄明白原理的请绕到官网查看文档。
1、首先下载从github上下载 源码。如果机器上装有Git,直接clone更好,省的再解压。
解压命令:tar -zxvf librdkafka-master.tgz
2、下载 lib库。然后解压。与源码置于同意文件夹下。两个版本二选一即可。
解压命令:tar -zxvf kafka_2.11-0.10.2.0.tgz
3、我放置源码的目录是:/opt/app/ets/etsalessrc/fy_kafka/librdkafka-master;
lib文件放置目录为:/opt/app/ets/etsalessrc/fy_kafka/kafka_2.11-0.10.2.0
为了省事,直接用root账户办接下来的事情。键入命令:su - root,回车,输入root密码。
4、预备工作完事。开始编译源码。
先赋予权限:/opt/app/ets/etsalessrc目录下,命令:chmod 777 -R fy_kafka
进入目录:cd fy_kafka/librdkafka-master/
编译和安装,依次命令:
./configure
make
make install
5、到此,源码处理结束。
进入目录:/opt/app/ets/etsalessrc/fy_kafka/kafka_2.11-0.10.2.0/config
修改文件server.properties,将34行首个字符 ‘#’ 号去掉
6、进入目录:/opt/app/ets/etsalessrc/kafka_2.11-0.10.2.0
依次执行:./bin/zookeeper-server-start.sh config/zookeeper.properties &,启动zookeeper(&是为了能退出命令行)
./bin/kafka-server-start.sh config/server.properties &,启动kafka
查看端口:netstat -tunlp|egrep "(2181|9092)"
或者单独查看9092端口:netstat -ant | grep 9092
查看服务启动情况:jps
新开的服务QuorumPeerMain是指zookeeper的进程。Kafka是指kafka的进程。
7、创建主题 XML2DIP:
./bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic XML2DIP
查看主题是否创建结果:
./bin/kafka-topics.sh --list --zookeeper localhost:2181
8、创建生产者:
./bin/kafka-console-producer.sh --broker-list localhost:9092 --topic XML2DIP
9、另开一个终端页面,创建消费者:
./bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic XML2DIP
10、生产者页面随意输入消息回车,可以看到消费者页面出现输入的消息。
注:消费者开启前,在生产者页面输入的消息,消费者页面不显示。若要查看所有消息,输入命令:
./bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic XML2DIP --from-beginning
关于kafka生产者和消费者的示例代码,在librdkafka里有示例。
1、C语言可参考代码:https://blog.youkuaiyun.com/lijinqi1987/article/details/76582067/,写的挺不错的
在运行my_producer或my_consumer时可能会报错"error while loading shared libraries xxx.so", 这是因为make的时候将librdkafak.so.1放在了/usr/local/lib下,在Linux的默认共享库路径/lib和/usr/lib下找不到,只要执行下面两句就可以了:
echo "/usr/local/lib" >> /etc/ld.so.conf
ldconfig
因为我建的topic名字是XML2DIP,所以生产者启动命令是:./my_producer localhost:9092 XML2DIP
消费者启动命令是:./my_consumer localhost:9092 XML2DIP
2、C++可参考代码:https://blog.youkuaiyun.com/jfu22/article/details/78194015。
我将这里面提供的几个代码文件放在目录/opt/app/ets/etsalessrc/fy_kafka/kafka_inter下进行编译,凡是提示错误的直接注释(因为是输出字符串的代码,注释无影响。另外头文件引用路径改成自己的路径;接口改为“localhost:9092”,topic改为XML2DIP)。
编译命令为:g++ KafkaProducer.cpp Producer.cpp -o Producer -lrdkafka -lz -lpthread -lrt
执行前先开启XML2DIP的topic。执行命令:./Producer。然后在消费者上面就可以看到代码里写入的字符串了。