Skip to content

消息队列_Kafka_安装与使用

系统环境是:Centos 7

参考:

Kafka 是一个分布式的基于发布/订阅模式的消息中间件,在业界主要应用于大数据实时流式计算领域,起解耦合和削峰填谷的作用。

在 Kafka 2.8 之前,Kafka 其重度依赖于 Zookeeper

安装操作: https://www.cnblogs.com/paopaoT/p/17461562.html

这里跳过上述操作,直接使用 docker 安装 kafka

一、Kafka 服务的安装与测试使用步骤

安装手册: https://developer.aliyun.com/article/1318521

拉取 ZooKeeper

docker pull wurstmeister/zookeeper

改一下挂载文件目录

启动 ZooKeeper 服务

#创建对应的目录来挂载Zookeeper,个人是放在 /root/RunEnvironment/zookeeper 目录下

docker run -d --name zookeeper  -p 2181:2181 -v /root/RunEnvironment/zookeeper:/data --restart always wurstmeister/zookeeper
    • p 2181:2181 # 对端口进行映射,将本地2181端口映射到容器内部的2181端口
  • – name # 设置创建的容器名称 -v # 将本地目录(文件)挂载到容器指定目录;
  • – restart always # 始终重新启动zookeeper

拉取Kafka

docker pull wurstmeister/kafka

启动 Kafka

docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=【ZooKeeper地址】:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://【kafka地址】:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 wurstmeister/kafka

实际使用的时候是讲两个服务的地址都改为了服务器的IP地址,然后启动运行

打开 Portainer 中的容器管理,选择进入容器

测试:

创建一个名为“testTopic”的topic,它有一个分区和一个副本

# 创建主题
kafka-topics.sh --create --zookeeper zookeeper地址:2181 --replication-factor 1 --partitions 1 --topic testTopic

# 列出所有主题来验证创建成功
kafka-topics.sh --list --zookeeper zookeeper地址:2181

#发送消息
kafka-console-producer.sh --broker-list kafka地址:9092 --topic testTopic

#启动一个 consumer,将消息转储到标准输出
#从指定的Kafka集群的`testTopic`主题中,从最开始的消息起,消费并在控制台显示所有消息
kafka-console-consumer.sh --bootstrap-server kafka地址:9092 --topic testTopic --from-beginning
  • --from-beginning:这个参数告诉消费者从主题的起始位置开始消费消息。如果不指定此参数,那么消费者将从最新的消息开始消费,即只消费自消费者启动之后发布到主题的新消息。

实际运行的时候需要讲上述命令的IP地址换为服务器的地址:

kafka-topics.sh --create --zookeeper 192.168.31.43:2181 --replication-factor 1 --partitions 1 --topic testTopic
kafka-topics.sh --list --zookeeper 192.168.31.43:2181
kafka-console-producer.sh --broker-list 192.168.31.43:9092 --topic testTopic
kafka-console-consumer.sh --bootstrap-server 192.168.31.43:9092 --topic testTopic --from-beginning

还看到一种方式是通过 docker-compose.yml 的操作讲上述串联起来,后续有兴趣可以研究一下。