[TOC] #### 1. 前言 --- 上一讲我们用 Docker 装好了 RabbitMQ,也登录了管理界面,这一讲,我们来好好逛一下这个后台,看看它能干什么 管理界面的地址是如下所示,用上一讲创建的账号登录(admin/admin123): ```plaintext 如果是本机安装的 RabbitMQ,访问地址:http://localhost:15672 如果是云服务器/虚拟机安装的 RabbitMQ,访问地址:http://IP地址:15672 ``` #### 2. 首页 Dashboard --- 登录之后看到的第一个页面就是 Dashboard,这里展示的是 RabbitMQ 的整体运行状态: | 区域 | 含义 | | ------------ | ------------ | | Totals | 当前有多少连接、通道、队列 | | Nodes | RabbitMQ 节点信息(单机就一个) | | Message rates | 消息的发送速率和消费速率 | 现在都是 0 或者很少,因为我们还没开始用,等后面发了消息,你会看到 `Message rates` 里有绿色的波形图在跳动 #### 3. Connections(连接) --- 这里显示所有连接到 RabbitMQ 的客户端,每个连接对应一个应用(比如你的 PHP 程序) 你在这里能看到: + 连接来自哪个 IP + 用的什么协议(AMQP 0-9-1) + 当前有多少个 Channel 后面如果遇到「连接数过多」的问题,就来这里排查 #### 4. Channels(通道) --- 一个 Connection 里可以有多个 Channel,你可以理解为: + Connection 是一条高速公路 + Channel 是高速路上的车道 一个 PHP 进程通常建一个 Connection,然后在里面开多个 Channel 来发消息。 不用管太深,后面写代码的时候你就明白了。 #### 5. Exchanges(交换机) --- 这里显示所有的 Exchange。 RabbitMQ 启动之后会自动创建一些默认的 Exchange,名字是 amq. 开头的,不用管它们。 你后面自己创建的 Exchange 会出现在这里,点进去能看到: + 这个 Exchange 绑定了哪些 Queue + 绑定的 routing key 是什么 #### 6. Queues(队列) --- 这是你最常用的页面,这里显示所有的队列,每个队列你能看到: | 字段 | 含义 | | -------- | -------------------------------------- | | Name | 队列名字 | | Features | 是否持久化(D)、独占(E)等 | | Ready | 等待消费的消息数量 | | Unacked | 已经发给消费者,但还没确认的消息数量 | | Total | Ready + Unacked | 点进某个队列,还能看到更详细的信息: + 消息速率图表 + 绑定的 Exchange + 手动发送消息、消费消息(测试用) Ready 和 Unacked 这两个数字很重要,是排查问题的第一线索: + 如果 Ready 一直在涨,说明消费者处理不过来,消息堆积了 + 如果 Unacked 一直不降,说明消息已经发给消费者了,但还没有被正常处理完成 #### 7. Admin(用户管理) --- 这里是管理用户和权限的地方。 创建用户:点击「Add a user」,填入用户名和密码 Tags 用来标记用户角色(一般开发环境用 `administrator` 就行) | Tag | 权限 | | --------------- | ------------------------ | | (空) | 普通用户 | | management | 可以登录管理界面 | | administrator | 管理员,全部权限 | 设置权限:创建用户之后,还要给它授权 点击用户名,进入详情页,在 「Permissions」 里设置: + Configure regexp:可以操作哪些队列 + Write regexp:可以往哪些队列写消息 + Read regexp:可以从哪些队列读消息 填 `.*` 表示所有队列都行。 #### 8. 手动测试:发一条消息 --- 管理界面自带了发消息的功能,可以用来测试。 操作步骤: + 进入 Queues 页面 + 点击你要测试的队列(如果没有,先创建一个) + 在 「Publish message」 区域填写内容 + 点击 Publish Message 然后在队列详情页的 「Get messages」 区域点击 「Get Message」,就能看到刚才发的消息。 这个功能在调试的时候非常有用。 #### 9. 创建一个队列试试 --- 在 Queues 页面点击 「Add a new queue」: | 字段 | 填什么 | | ------------ | -------------------- | | Name | test_queue | | Durability | Durable(持久化) | | Auto delete | No | 点击 「Add queue」,队列就创建好了,然后在 「Publish message」 区域发一条消息: ```plaintext Hello RabbitMQ ``` 再到 「Get messages」 点击 「Get Message」,你能看到: ```plaintext Hello RabbitMQ ``` 恭喜,你完成了第一次在 RabbitMQ 里收发消息,虽然还是在界面上手动操作,但原理和代码是一样的。 #### 10. 本文小结 --- 管理界面是你和 RabbitMQ 交互的可视化工具,重点记住这几个页面: | 页面 | 干什么用 | | --------- | ---------------------------- | | Dashboard | 看整体状态 | | Queues | 看队列、消息堆积情况 | | Exchanges | 看路由绑定关系 | | Admin | 管理用户和权限 | 最常用的是 Queues 页面,Ready 和 Unacked 两个数字是排查问题的核心指标。 下一讲,我们用 PHP 代码连接 RabbitMQ,完成第一个 Hello World。