### Kafka 常用操作命令解析
#### 一、启动Kafka服务
**命令:**
```bash
kafka-server-start.sh config/server.properties
```
**解释:**
此命令用于启动Kafka服务。其中`kafka-server-start.sh`是启动脚本,`config/server.properties`是配置文件路径,用于指定Kafka服务的运行参数。
#### 二、创建主题
**命令:**
```bash
kafka-topics.bat --create --topic test2 --zookeeper 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183 --partitions 4 --replication-factor 3
```
**解释:**
此命令用于创建一个名为`test2`的主题。`--topic`参数用于指定主题名称;`--zookeeper`参数用于指定ZooKeeper集群地址(这里是三个节点组成的集群);`--partitions`参数用于指定该主题的分区数量;`--replication-factor`参数用于指定每个分区的副本数。
#### 三、列出所有主题
**命令:**
```bash
kafka-topics.bat --list --zookeeper 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
```
**解释:**
此命令用于列出当前Kafka集群中的所有主题。通过`--zookeeper`参数指定ZooKeeper集群地址。
#### 四、描述主题详情
**命令:**
```bash
kafka-topics.bat --describe --zookeeper 127.0.0.1:2181 --topic test2
```
**解释:**
此命令用于查看指定主题的详细信息,包括分区信息、副本状态等。`--topic`参数指定要查看的主题名称;`--zookeeper`参数指定ZooKeeper集群地址。
#### 五、删除主题
**命令:**
```bash
kafka-topics.sh --zookeeper 127.0.0.1:2181 --topic test --delete
```
**解释:**
此命令用于删除指定的主题。注意,Kafka默认不支持直接删除主题,需通过修改配置文件来开启这一功能。`--topic`参数指定要删除的主题名称;`--zookeeper`参数指定ZooKeeper集群地址。
#### 六、发送消息到主题
**命令:**
```bash
kafka-console-producer.bat --broker-list 127.0.0.1:9092,127.0.0.1:9093,127.0.0.1:9096 --topic test
```
**解释:**
此命令用于向指定主题发送消息。`--broker-list`参数指定Kafka Broker列表;`--topic`参数指定发送消息的目标主题名称。
#### 七、消费主题中的消息
**命令:**
```bash
kafka-console-consumer.bat --zookeeper 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183 --topic test --from-beginning
```
**解释:**
此命令用于从指定主题消费消息。`--zookeeper`参数指定ZooKeeper集群地址;`--topic`参数指定消费的消息来源主题;`--from-beginning`参数表示从最早的消息开始消费。
#### 八、增加主题分区
**命令:**
```bash
kafka-topics.bat --zookeeper 127.0.0.1:2181 --alter --topic test2 --partitions 5
```
**解释:**
此命令用于增加指定主题的分区数量。`--topic`参数指定要增加分区的主题名称;`--partitions`参数指定新的分区数量。
#### 九、管理Consumer Group
1. **列出Consumer Group**
- 使用新API
```bash
kafka-consumer-groups.bat --new-consumer --bootstrap-server 127.0.0.1:9292 --list
```
- 使用旧API
```bash
kafka-consumer-groups.bat --zookeeper 127.0.0.1:2181/kafka --list
```
2. **描述特定Consumer Group**
- 使用新API
```bash
kafka-consumer-groups.bat --new-consumer --bootstrap-server 127.0.0.1:9292 --group lx_test --describe
```
- 使用旧API
```bash
kafka-consumer-groups.bat --zookeeper 127.0.0.1:2181 --group console-consumer-11967 --describe
```
**解释:**
以上命令分别用于列出和描述Consumer Group的信息。`--new-consumer`参数表示使用新的消费者API;`--bootstrap-server`参数指定Kafka Broker地址;`--group`参数指定要操作的Consumer Group名称;`--describe`参数用于描述Consumer Group的详细信息。
### 小结
通过上述命令,我们可以实现对Kafka集群的基本管理和操作,包括主题的创建、查看、删除,消息的生产和消费,以及Consumer Group的管理等。这些命令是Kafka日常运维和开发工作中不可或缺的部分,掌握它们能够帮助我们更高效地使用Kafka系统。