- 首先,我們知道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
- 測試一下消息的發送與接收
我們這裏使用的是docker安裝的,我們首先需要進入一下docker
查詢dockerID,可以從第一列看到容器ID
docker ps
以下命令請將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
測試完成後,我們可以看到。當我們生產端發送一條消息的時候,我們的消息者就可以收到對應的消息。