kafka 简明教程
概述
kafka 是一个具有分布式特点的发布订阅的消息队列。可以系统解耦,流量削峰,异步通信,分布式存储。
具有相同消息队列功能的其他产品:MQ, REDIS 等。
名词解释(重点概念)
- producer: 生产者,由生产者负责把消息发送到 kafka 服务器。
- consumer: 消费者,由消费者从服务器上读取消息。
- consumer: 消费者组。
- Topic : 订阅发布消息的频道。
- Broker: kafka 集群中的服务器。负责转发消息。
简单使用
kafka 默认监听的端口为9092
1 启动 zookeeper
./bin/zookeeper-server-start.sh conifg/zookeeper.properties
2 启动 kafka 服务(必须先启动zookeeper)
./bin/kafka-server-start.sh config/server.properties
kafka 命令行
1 创建一个topic
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
2 查看已经创建的topic
bin/kafka-topics.sh --list --zookeeper localhost:2181
3 创建生产者,并发送消息。
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
> hello word
4 创建消费者,现在消息队列中已经有了数据。
./bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
> hello world
python-kafka
kafka 提供了python 的工具包。
1 安装kafka 工具包。
pip install kafka
2 创建Producer 的demo
import json
from kafka import KafkaProducer
data = {"a": 1, "b": 2, "c":3}
producer = KafkaProducer(bootstrap_servers=["localhost:9092"],
api_version=(0, 10, 0),
value_serializer=lambda v: json.dumps(v).encode('utf-8'))
for i in range(1000):
producer.send("test", data, partition=0)
3 创建消费者脚本。
```python
from kafka import KafkaConsumer
consumer = KafkaConsumer('test',
group_id="group2",
bootstrap_servers=["localhost:9092"])
for msg in consumer:
print(msg.value)
命令行其他工具
- 查看topic 列表 ,包含当前服务器上所有的topic.
bin/kafka-topics.sh --zookeeper host ip:port --list
- 删除指定topic 需要在 server.properties 中设置 delete.topic.enable=true.
./bin/kafka-topics.sh --zookeeper host ip:port --delete --topic xxx
- 查看指定topic 的详细信息。
bin/kafka-topics.sh --zookeeper hsotip:port --describe --topic xx
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端