菜鸟科技网

常用mq命令

RabbitMQ 命令

RabbitMQ 是一个功能非常完善的开源消息代理,其命令行工具 rabbitmqctl 是管理 RabbitMQ 服务器最核心的工具。

常用mq命令-图1
(图片来源网络,侵删)

服务启停与状态

命令 说明 示例
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_HOMEZOOKEEPER_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 工具。

常用mq命令-图2
(图片来源网络,侵删)
工具/命令 说明 示例
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 通常通过 systemdsupervisord 等进程管理器控制
资源隔离 Virtual Hosts Topics (逻辑隔离) / Clusters (物理隔离)
消息追溯 队列本身存储消息,可通过工具查询 消费者组维护消费偏移量,可重置
适用场景 解耦、异步、路由、任务分发 日志收集、流处理、事件溯源、高吞吐量数据管道

希望这份详细的命令列表能帮助您更好地使用 RabbitMQ 和 Kafka!

常用mq命令-图3
(图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇