Kafka是大型架构核心,下面我详解Kafka开发命令@mikechen
1. 创建Topic
kafka-topics.sh --create \
--topic order-topic \
--bootstrap-server localhost:9092 \
--partitions 3 \
--replication-factor 1
核心参数:
--topic:Topic名称--partitions:Partition数量--replication-factor:副本数量--bootstrap-server:Kafka Broker地址
例如创建一个3分区的订单Topic:
order-topic
├── Partition 0
├── Partition 1
└── Partition 2
2. 查看所有Topic
kafka-topics.sh --list \
--bootstrap-server localhost:9092
输出:
order-topic
user-topic
payment-topic
这是开发环境中最常用的命令之一。
3. 查看Topic详细信息
kafka-topics.sh --describe \
--topic order-topic \
--bootstrap-server localhost:9092
可以看到:
Topic: order-topic
PartitionCount: 3
ReplicationFactor: 1
Partition: 0
Leader: 0
Replicas: 0
Isr: 0
重点关注:
- Partition数量
- Leader
- Replicas
- ISR
ISR异常通常是排查Kafka副本同步问题的重要入口。
4. 修改Topic分区数
kafka-topics.sh --alter \
--topic order-topic \
--partitions 6 \
--bootstrap-server localhost:9092
例如:
原来:3个Partition
P0
P1
P2
扩容后:6个Partition
P0
P1
P2
P3
P4
P5
注意:Kafka只能增加Partition,不能直接减少Partition。
5. 删除Topic
kafka-topics.sh --delete \
--topic order-topic \
--bootstrap-server localhost:9092
生产环境删除Topic需要特别谨慎。
可以先确认:
kafka-topics.sh --list \
--bootstrap-server localhost:9092
再执行删除。
6. 生产消息
使用 kafka-console-producer.sh:
kafka-console-producer.sh \
--topic order-topic \
--bootstrap-server localhost:9092
然后输入:
order-1001
order-1002
order-1003
Kafka会把这些消息发送到 order-topic。
这是开发和测试Kafka生产消息最常用的命令。
7. 消费消息
kafka-console-consumer.sh \
--topic order-topic \
--bootstrap-server localhost:9092
启动后会持续消费新消息。
例如:
order-1001
order-1002
order-1003
适合实时查看Topic中的新消息。
8. 从头开始消费消息
如果希望从Topic最早的消息开始消费:
kafka-console-consumer.sh \
--topic order-topic \
--bootstrap-server localhost:9092 \
--from-beginning
这个命令在开发测试、消息丢失排查、历史消息验证时非常常用。
例如:
Kafka Topic
│
├── order-001
├── order-002
├── order-003
├── order-004
└── order-005
↓
--from-beginning
↓
从第一条消息开始消费
9. 查看Consumer Group
kafka-consumer-groups.sh \
--bootstrap-server localhost:9092 \
--list
例如:
order-service-group
payment-service-group
user-service-group
Consumer Group是Kafka实现消费组、负载均衡、Offset管理的核心机制。
10. 查看Consumer Group消费情况
kafka-consumer-groups.sh \
--bootstrap-server localhost:9092 \
--describe \
--group order-service-group
典型输出:
TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG
order-topic 0 1000 1050 50
order-topic 1 1200 1200 0
order-topic 2 900 1000 100