以前队列都用的其他的,没用过 kafka,听说延迟和吞吐都不错,测试一下,后面说不定能用上。
直接运行
wget https://dlcdn.apache.org/kafka/3.1.0/kafka_2.13-3.1.0.tgz
tar -zxvf kafka_*.tgz
启动 zookeeper
bin/zookeeper-server-start.sh -daemon config/zookeeper.properties
后台运行。logs 文件夹可看到输出。
启动 kafka
bin/kafka-server-start.sh -daemon config/server.properties
后台运行。logs 文件夹可看到输出。
停止
bin/zookeeper-server-stop.sh
bin/kafka-server-stop.sh
docker 运行
可以直接拉镜像运行,这里在网上找了一个 compose 的配置
docker-compose.yml
version: "3"
services:
zookeeper:
image: wurstmeister/zookeeper
ports:
- "2181:2181"
kafka:
image: wurstmeister/kafka
depends_on: [zookeeper]
ports:
- "9092:9092"
environment:
KAFKA_ADVERTISED_HOST_NAME: localhost
KAFKA_CREATE_TOPICS: "test"
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
volumes:
- /var/run/docker.sock:/var/run/docker.sock
打包
docker-compose build
启动, 添加 -d 可以后台启动。
sudo docker-compose up
自带工具测试
创建 topic
bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test
bin/kafka-topics.sh --list --bootstrap-server localhost:9092
测试产生消息
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
测试消费消息
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
据说 --bootstrap-server 是新方法,不像以前要访问 zk。
查看描述 topics 信息
bin/kafka-topics.sh --describe --bootstrap-server localhost:9092 --topic test
kafkacat 测试
sudo apt install kafkacat
基本信息
kafkacat -L -b localhost:9092
生产消费
kafkacat -P -b localhost:9092 -t test
kafkacat -C -b localhost:9092 -t test
C++ 测试
貌似 apt 能找到对应的开发库。
sudo apt install librdkafka-dev
有 c 和 c++ 的 api,不过不好用。。
测试会自动重连。
每次都会得到消息。。需要 group id 相同?
分区什么的也搞不懂,以后用上了再说吧。