欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

消息中间件之kafka(一)

程序员文章站 2024-01-30 16:40:22
...
  1. 首先,我们知道kafka是一个消息中间件。我们先安装一个来操作一下,因为我们是开发环境,所以我们这里采用方便的docker进行安装。
    启动zookeeper
docker run -d --name zookeeper --publish 2181:2181 \--volume /etc/localtime:/etc/localtime \--restart=always \wurstmeister/zookeeper

启动kafka,注意在运行的时候需要把对应的IP换成自己的IP地址

docker run -d --name kafka --publish 9082:9092 \--link zookeeper:zookeeper \--env KAFKA_BROKER_ID=100 \--env HOST_IP=192.168.1.108 \--env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 \--env KAFKA_ADVERTISED_HOST_NAME=192.168.1.108 \--env KAFKA_ADVERTISED_PORT=9082 \--restart=always \--volume /etc/localtime:/etc/localtime \wurstmeister/kafka

启动kafka的管理页面,这个可以启动也可以不启

docker run -d --name kafka-manager \--link zookeeper:zookeeper \--link kafka:kafka -p 9001:9000 \--restart=always \--env ZK_HOSTS=zookeeper:2181 \sheepkiller/kafka-manager
  1. 测试一下消息的发送与接收
    我们这里使用的是docker安装的,我们首先需要进入一下docker

查询dockerID,可以从第一列看到容器ID

docker ps 

消息中间件之kafka(一)
以下命令请将ID换成对应ID

docker exec -it 46e0e009c508 /bin/bash  
#切换到对应目录
cd /opt/kafka_2.12-2.5.0/bin/
#创建一个topic,replication-factor 
#副本数量不能大于broker的数量
#partitions 是我们队列的数量,一个partion在同一个消费者组内只能有一个消费者,如果我们想使用多个消息者进行消费,我们可以在里设置多个partion
 ./kafka-topics.sh --create --zookeeper 192.168.3.17:2181 --replication-factor 1 --partitions 1 --topic test520
#查询创建的topics
./kafka-topics.sh --list --zookeeper 192.168.3.17:2181

开启一个消息者

#1、消费者在同一个组内只能消费一次消息,如果想要两个客户端分别消费同一个消息,可以设置为两个组
#2、消费者消费完消息后,kafka不会删除此消息。它只会改变它的offset值。待等失效时间过了,消息才会删除(默认为7天)。
./kafka-console-consumer.sh --bootstrap-server localhost:9092 --consumer-property group.id=testGroup -consumer-property client.id=consumer-1 --topic test520

开启一个生产者

./kafka-console-producer.sh --broker-list localhost:9092 --topic test520

测试完成后,我们可以看到。当我们生产端发送一条消息的时候,我们的消息者就可以收到对应的消息。

相关标签: 消息中间件