kafka在windows和centos下跨环境发送消息
参考文章:
文章一 Windows和Linux环境搭建kafka服务:https://blog.csdn.net/rico_zhou/article/details/79866076
文章二 windows下搭建Kafka运行环境:https://blog.csdn.net/u012050154/article/details/76270655
文章三 windows kafka安装及问题解决:https://blog.csdn.net/yuebao1991/article/details/72771599
windows下kafka环境搭建
1、下载zookeeper:http://archive.apache.org/dist/zookeeper/
2、下载kafka:http://kafka.apache.org/downloads
3、解压两个压缩包,在C盘目录下新建文件夹kafka,将解压后的两个文件放入其中
4、接下来我们修改必须要改的文件,进入zookeeper下的conf,会有一个zoo_smaple.cfg文件,首先将文件名改为zoo.cfg,这个是zookeeper的配置文件,其中大部分不需要修改,只有一个日志文件路径dataDir可能需要根据自己的情况修改。默认如下:
dataDir=/tmp/zookeeper
5、接下来进入kafka-xxxx/config,修改server.properties文件内容。大部分不用修改,也有一个日志文件的路径,修改为:
log.dirs=C:\kafka\kafka_2.11-0.10.0\kafka-logs
可以修改log.dirs,num.partitions是分区数量,默认1就可以了,如果zookeeper和kafka在同一ip,则zookeeper.connect不需要更改,如果不是,对应更改即可。
6、全部修改完毕之后,先启动zookeeper,进入bin目录,双击zkServer.cmd即可。zookeeper启动成功,cmd页面不要关闭。
7、进入kafka目录,启动kafka:
.\bin\windows\kafka-server-start.bat .\config\server.properties
执行报错:
java环境变量配置正常,应该是执行脚本的问题,下面是kafka-server-start.bat内容:
IF [%1] EQU [] (
echo USAGE: %0 server.properties
EXIT /B 1
)
SetLocal
IF ["%KAFKA_LOG4J_OPTS%"] EQU [""] (
set KAFKA_LOG4J_OPTS=-Dlog4j.configuration=file:%~dp0../../config/log4j.properties
)
IF ["%KAFKA_HEAP_OPTS%"] EQU [""] (
set KAFKA_HEAP_OPTS=-Xmx1G -Xms1G
)
%~dp0kafka-run-class.bat kafka.Kafka %*
EndLocal
可以看到里面调用的是kafka-run-class.bat,根据网上查找资料
将原文件中的
set COMMAND=%JAVA% %KAFKA_HEAP_OPTS% %KAFKA_JVM_PERFORMANCE_OPTS% %KAFKA_JMX_OPTS% %KAFKA_LOG4J_OPTS% -cp %CLASSPATH% %KAFKA_OPTS% %*
修改为:
set COMMAND=%JAVA% %KAFKA_HEAP_OPTS% %KAFKA_JVM_PERFORMANCE_OPTS% %KAFKA_JMX_OPTS% %KAFKA_LOG4J_OPTS% -cp "%CLASSPATH%" %KAFKA_OPTS% %*
主要 %CLASSPATH% 变成了 “%CLASSPATH%”, 多了一个引号。
再执行启动命令,kafka启动成功.
测试
1、进入kafka目录的\bin\windows,创建kafka的消息topics
kafka-topics.bat --create --zookeeper 10.x.x.107:2181 --replication-factor 1 --partitions 1 --topic windwsbit
指定的是远程服务器上的IP和zookeeper,topic为 windowsbit。
2、启动producer
kafka-console-producer.bat --broker-list 10.x.x.107:9092 --topic windowsbit
同样指定为远程服务器IP地址。
3、启动服务器上的consumer
sh kafka-console-consumer.sh --zookeeper 10.x.x.107:2181 --topic windowsbit --from-beginning
4、开始发送消息和接收
可以看到左边cmd中发送的消息,在右边的xshell中成功接收。