RabbitMQ 命令
RabbitMQ 是一个功能非常完善的开源消息代理,其命令行工具 rabbitmqctl 是管理 RabbitMQ 服务器最核心的工具。
服务启停与状态
| 命令 |
说明 |
示例 |
rabbitmq-server |
启动 RabbitMQ 服务(前台运行) |
rabbitmq-server |
rabbitmq-server -detached |
(推荐) 后台启动 RabbitMQ 服务 |
rabbitmq-server -detached |
rabbitmqctl stop |
停止 RabbitMQ 服务 |
rabbitmqctl stop |
rabbitmqctl status |
查看 RabbitMQ 服务器状态 |
rabbitmqctl status |
rabbitmqctl restart |
重启 RabbitMQ 服务 |
rabbitmqctl restart |
用户管理
RabbitMQ 使用用户名和密码进行认证。
| 命令 |
说明 |
示例 |
rabbitmqctl add_user <username> <password> |
添加一个新用户 |
rabbitmqctl add_user myuser mypassword |
rabbitmqctl delete_user <username> |
删除一个用户 |
rabbitmqctl delete_user myuser |
rabbitmqctl change_password <username> <newpassword> |
修改用户密码 |
rabbitmqctl change_password myuser newpassword |
rabbitmqctl list_users |
列出所有用户及其角色 |
rabbitmqctl list_users |
rabbitmqctl set_user_tags <username> <tag> |
设置用户角色(如 administrator, monitoring, policymaker) |
rabbitmqctl set_user_tags myuser administrator |
权限与虚拟主机管理
虚拟主机是 RabbitMQ 逻辑上的隔离空间,类似于数据库中的数据库。
| 命令 |
说明 |
示例 |
rabbitmqctl add_vhost <vhost_path> |
创建一个新的虚拟主机 |
rabbitmqctl add_vhost /my_app |
rabbitmqctl delete_vhost <vhost_path> |
删除一个虚拟主机 |
rabbitmqctl delete_vhost /my_app |
rabbitmqctl list_vhosts |
列出所有虚拟主机 |
rabbitmqctl list_vhosts |
rabbitmqctl set_permissions -p <vhost> <user> "<conf>" "<write>" "<read>" |
为用户在指定 vhost 上设置权限 |
rabbitmqctl set_permissions -p /my_app myuser ".*" ".*" ".*" (权限通配符: 表示所有) |
rabbitmqctl clear_permissions -p <vhost> <user> |
清除用户在指定 vhost 上的权限 |
rabbitmqctl clear_permissions -p /my_app myuser |
rabbitmqctl list_permissions -p <vhost> |
列出指定 vhost 上所有用户的权限 |
rabbitmqctl list_permissions -p /my_app |
队列与交换机管理
| 命令 |
说明 |
示例 |
rabbitmqctl list_queues [-p <vhost>] |
列出指定 vhost 中的所有队列及其消息数 |
rabbitmqctl list_queues -p /my_app |
rabbitmqctl list_exchanges [-p <vhost>] |
列出指定 vhost 中的所有交换机 |
rabbitmqctl list_exchanges |
rabbitmqctl list_bindings [-p <vhost>] |
列出所有绑定关系 |
rabbitmqctl list_bindings |
rabbitmqctl purge_queue <queue_name> [-p <vhost>] |
清空队列中的所有消息 |
rabbitmqctl purge_queue my_queue -p /my_app |
rabbitmqctl delete_queue <queue_name> [-p <vhost>] |
删除一个队列 |
rabbitmqctl delete_queue my_queue -p /my_app |
集群管理
| 命令 |
说明 |
示例 |
rabbitmqctl cluster_status |
查看集群状态和成员信息 |
rabbitmqctl cluster_status |
rabbitmqctl join_cluster <rabbit@hostname> [--ram] |
将当前节点加入指定节点构成的集群 |
rabbitmqctl join_cluster rabbitmq@node2 |
rabbitmqctl change_cluster_node_type disc\|ram |
修改集群中节点的类型(磁盘节点或内存节点) |
rabbitmqctl change_cluster_node_type ram |
rabbitmqctl forget_cluster_node [--offline] <node> |
让集群中的某个节点忘记另一个节点(常用于移除节点) |
rabbitmqctl forget_cluster_node rabbitmq@node2 |
rabbitmqctl reset |
重置节点,将其从集群中移除并恢复为独立状态 |
rabbitmqctl reset |
插件管理
| 命令 |
说明 |
示例 |
rabbitmq-plugins list |
列出所有可用和已启用的插件 |
rabbitmq-plugins list |
rabbitmq-plugins enable <plugin_name> |
启用一个插件 |
rabbitmq-plugins enable rabbitmq_management |
rabbitmq-plugins disable <plugin_name> |
禁用一个插件 |
rabbitmq-plugins disable rabbitmq_management |
Apache Kafka 命令
Kafka 的命令行工具位于 bin 目录下,kafka-*.sh,这些命令通常需要配置 KAFKA_HOME 和 ZOOKEEPER_CONNECT 环境变量。
Topic 管理
| 命令 |
说明 |
示例 |
kafka-topics.sh --bootstrap-server <broker_list> --create --topic <topic_name> [options] |
创建 Topic |
kafka-topics.sh --bootstrap-server localhost:9092 --create --topic my_topic --partitions 3 --replication-factor 1 |
kafka-topics.sh --bootstrap-server <broker_list> --list |
列出所有 Topic |
kafka-topics.sh --bootstrap-server localhost:9092 --list |
kafka-topics.sh --bootstrap-server <broker_list> --describe --topic <topic_name> |
查看 Topic 详细信息 |
kafka-topics.sh --bootstrap-server localhost:9092 --describe --topic my_topic |
kafka-topics.sh --bootstrap-server <broker_list> --alter --topic <topic_name> [options] |
修改 Topic 配置(如分区数) |
kafka-topics.sh --bootstrap-server localhost:9092 --alter --topic my_topic --partitions 5 |
kafka-topics.sh --bootstrap-server <broker_list> --delete --topic <topic_name> |
删除 Topic |
kafka-topics.sh --bootstrap-server localhost:9092 --delete --topic my_topic |
生产者与消费者
| 命令 |
说明 |
示例 |
kafka-console-producer.sh --bootstrap-server <broker_list> --topic <topic_name> |
启动一个控制台生产者,用于手动发送消息 |
kafka-console-producer.sh --bootstrap-server localhost:9092 --topic my_topic (输入消息后按回车发送) |
kafka-console-consumer.sh --bootstrap-server <broker_list> --topic <topic_name> [--from-beginning] |
启动一个控制台消费者,用于消费消息 |
kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic my_topic --from-beginning (--from-beginning 从最早的消息开始消费) |
kafka-console-consumer.sh --bootstrap-server <broker_list> --topic <topic_name> --group <group_id> |
以指定消费者组身份消费 |
kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic my_topic --group my_group |
消费者组管理
| 命令 |
说明 |
示例 |
kafka-consumer-groups.sh --bootstrap-server <broker_list> --list |
列出所有消费者组 |
kafka-consumer-groups.sh --bootstrap-server localhost:9092 --list |
kafka-consumer-groups.sh --bootstrap-server <broker_list> --describe --group <group_id> |
查看指定消费者组的详细信息(如消费偏移量、分区分配情况) |
kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group my_group |
kafka-consumer-groups.sh --bootstrap-server <broker_list> --group <group_id> --reset-offsets --to-earliest --all-topics --execute |
(危险) 重置消费者组的消费偏移量到最早位置 |
kafka-consumer-groups.sh --bootstrap-server localhost:9092 --group my_group --reset-offsets --to-earliest --all-topics --execute |
kafka-consumer-groups.sh --bootstrap-server <broker_list> --group <group_id> --delete |
删除一个空的消费者组 |
kafka-consumer-groups.sh --bootstrap-server localhost:9092 --group my_group --delete |
消息与偏移量
| 命令 |
说明 |
示例 |
kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list <broker_list> --topic <topic_name> [--time -1] |
查看指定 Topic 各分区的当前偏移量 |
kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list localhost:9092 --topic my_topic --time -1 (-1 表示最新偏移量, -2 表示最早偏移量) |
kafka-avro-console-producer.sh / kafka-avro-console-consumer.sh |
用于处理 Avro 格式消息的命令行工具(需配置 Schema Registry) |
(用法与普通控制台生产/消费者类似,但需指定 --property schema.registry.url) |
Kafka Connect 与 KSQL (可选)
对于 Kafka Connect 和 KSQL,它们通常作为独立服务运行,并提供了自己的 REST API 或 CLI 工具。
| 工具/命令 |
说明 |
示例 |
curl |
通过 REST API 管理 Connectors |
curl -s -X POST -H "Content-Type: application/json" --data '{"name":"my-connector", "config":{...}}' http://localhost:8083/connectors |
ksql |
KSQL 的交互式命令行 |
ksql http://localhost:8088 进入后可执行 CREATE STREAM ...;, SELECT * FROM ... EMIT CHANGES; 等。 |
| 功能 |
RabbitMQ |
Kafka |
| 核心概念 |
Exchange, Queue, Binding |
Topic, Partition, Producer, Consumer, Group |
| 命令工具 |
rabbitmqctl |
kafka-*.sh |
| 服务管理 |
rabbitmq-server, rabbitmqctl |
通常通过 systemd 或 supervisord 等进程管理器控制 |
| 资源隔离 |
Virtual Hosts |
Topics (逻辑隔离) / Clusters (物理隔离) |
| 消息追溯 |
队列本身存储消息,可通过工具查询 |
消费者组维护消费偏移量,可重置 |
| 适用场景 |
解耦、异步、路由、任务分发 |
日志收集、流处理、事件溯源、高吞吐量数据管道 |
希望这份详细的命令列表能帮助您更好地使用 RabbitMQ 和 Kafka!