安装JDK
kafka需要JDK的支持,所以第一步是安装JDK。
安装JDK1.8
yum install -y java-1.8.0-openjdk.x86_64
安装完成后可以查看JDK版本
java -version
安装Kafka
下载kafka
1、到kafka的官网,去下载想用的kafka包:http://kafka.apache.org/downloads
2、由于项目对方要求使用kafka2.0.0所以下载的是kafka_2.11-2.0.0.tgz
3、将下载好的包上传到服务器并且解压,此处路径可以自定义,解压命令:
tar -zxvf kafka_2.11-2.0.0.tgz
4、如果是windows也是同样的,解压kafka_2.11-2.0.0.tgz包到自己想要的目录下。
启动kafka
1、解压后如果不想修改默认配置可以直接运行即可使用kafka客户端
2、启动kafka先要启动zookeeper服务,进入刚刚解压后的kafka目录
linux版本:
sh bin/zookeeper-server-start.sh config/zookeeper.properties
windows版本,进入解压后的kafka目录cmd窗口:
bin\windows\zookeeper-server-start.bat config\zookeeper.properties
3、启动kafka服务,还在刚刚的kafka解压后的目录
linux版本:
sh bin/kafka-server-start.sh config/server.properties
windows版本,进入解压后的kafka目录cmd窗口:
bin\windows\kafka-server-start.bat config\server.properties
4、有了启动怎么可以没有关闭
关闭zookeeper命令:
sh bin/zookeeper-server-stop.sh config/zookeeper.properties
关闭kafka命令:
sh bin/kafka-server-stop.sh config/server.properties
5、为了方便启动,我们创建启动快捷脚本,vi startkafka.sh,使用这个脚本就不需要启动zookeeper再启动kafka,脚本自动把两个服务都启动好,脚本中路径需要自行定义。
#!/bin/sh
#启动zookeeper
/app/kafka/kafka_2.11-2.0.0/bin/zookeeper-server-start.sh /app/kafka/kafka_2.11-2.0.0/config/zookeeper.properties &
sleep 5 #等5秒后执行
#启动kafka
/app/kafka/kafka_2.11-2.0.0/bin/kafka-server-start.sh /app/kafka/kafka_2.11-2.0.0/config/server.properties &
6、为了方便关闭,我们创建关闭快捷脚本,vi stopkafka.sh,脚本中路径需要自行定义。
#!/bin/sh
#启动kafka
/app/kafka/kafka_2.11-2.0.0/bin/kafka-server-start.sh /app/kafka/kafka_2.11-2.0.0/config/server.properties &
sleep 3 #等3秒后执行
#启动zookeeper
/app/kafka/kafka_2.11-2.0.0/bin/zookeeper-server-start.sh /app/kafka/kafka_2.11-2.0.0/config/zookeeper.properties &
7、有了启动/关闭脚本后只需要执行 sh startkafka.sh或者sh stopkafka.sh即可启动/关闭kafka以及zookeeper
Kafka命令
以下命令全部在kafka根目录下执行
1、创建topic
sh bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic hello
2、查看topic
sh bin/kafka-topics.sh --zookeeper localhost:2181 --list
3、删除topic
sh bin/kafka-topics.sh --delete --zookeeper localhost:2181 --topic hello
4、创建生产者producer
sh bin/kafka-console-producer.sh --broker-list localhost:9092 --topic hello
5、另起创建消费者consumer
sh bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic hello --from-beginning
6、此时在生产者窗口推送的内容能被消费者窗口中接收
Kafka配置
在服务器中搭建了Kafka后使用Java开发Kafka后报错
Exception thrown when sending a message with key='null' and payload='test1' to topic hello:
经过分析后发现是由于Kafka客户端配置问题导致,需要修改Kafka客户端配置的IP地址,修改listeners的ip地址, vi config/server.properties
listeners=PLAINTEXT://172.20.240.27:9092
advertised.listeners=PLAINTEXT://172.20.240.26:9092
重启后外网可以向服务器生产以及消费。
除此外zookeeper配置可以修改config/zookeeper.properties
kafaka配置可以修改config/server.properties
具体配置可以参考官方文档。比较常见的可以修改日志地址等内容