1、使用Docker方式安装
1.1 安装并启动kafka容器
docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=192.168.1.12:2181/kafka -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.1.12:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -v /etc/localtime:/etc/localtime wurstmeister/kafka
参数说明:
- KAFKA_BROKER_ID:当前Kafka的唯一ID
- KAFKA_ZOOKEEPER_CONNECT:当前Kafka使用的Zookeeper配置信息
- KAFKA_ADVERTISED_LISTENERS:对外发布(暴露)的监听器,对外发布监听端口、地址
- KAFKA_LISTENERS:监听器,告诉外部连接者要通过什么协议访问指定主机名和端口开放的 Kafka 服务。
注意:这里有使用到zookeeper,zookeeper的单机安装请参考:centos服务器搭建zookeeper集群搭建文章中的第8节。
2 测试kafka发送消息,接收消息
2.1 使用kafka发送消息
# 进入到kafka容器中
docker exec -it cd28ddfaa74c /bin/bash
# 进入到kafka的/opt/kafka_2.13-2.7.0/bin/目录下
cd /opt/kafka_2.13-2.7.0/bin/
# 创建队列 topic testmsg
./kafka-topics.sh --create --bootstrap-server 192.168.1.12:9092 --replication-factor 1 --partitions 1 --topic testmsg
# 给队列testmsg发送消息
./kafka-console-producer.sh --broker-list 192.168.1.12:9092 --topic testmsg
# 发送的消息内容
{"userid":"a0001","image":"zhangsan.jpg","ip":"192.168.1.101"}
{"userid":"a0002","image":"lisi.jpg","ip":"192.168.1.102"}
{"userid":"a0003","image":"wangwu.jpg","ip":"192.168.1.103"}
2.2 使用kafka接收消息
# 进入到kafka容器中
docker exec -it cd28ddfaa74c /bin/bash
# 进入到kafka的/opt/kafka_2.13-2.7.0/bin/目录下
cd /opt/kafka_2.13-2.7.0/bin/
# 接收消息
./kafka-console-consumer.sh --bootstrap-server 192.168.1.12:9092 --topic testmsg --from-beginning
3 使用非docker方式安装
kafka_2.11-2.2.2.tgz
进入到/usr/local/目录,将kafka_2.11-2.2.2.tgz文件上传到该目录,然后解压
cd /usr/local/
tar -zxvf kafka_2.11-2.2.2.tgz
cd kafka_2.11-2.2.2
修改/usr/local/kafka_2.11-2.2.2/config/server.properties文件内容,如以下三处
log.dirs=/data/kafka-logs
zookeeper.connect=192.168.1.12:2181
zookeeper.connection.timeout.ms=60000
修改"log.dirs=/data/kafka-logs"后,要执行mkdir -p /data/kafka-logs命令,
# 创建/data/kafka-logs目录
mkdir -p /data/kafka-logs
# 在/usr/local/kafka_2.11-2.2.2/目录下 启动kafka
./bin/kafka-server-start.sh ./config/server.properties
# 在/usr/local/kafka_2.11-2.2.2/目录下 停止kafka
./bin/kafka-server-stop.sh ./config/server.properties