- 1. Docker下安装RabbitMQ
- 1.1 查询RabbitMQ镜像
- 1.2 获取镜像
- 1.3 检查镜像
- 1.4 运行镜像
- 1.5 查询镜像运行情况
- 1.6 验证客户端
- 2. RabbitMQ管理页面
- 2.1 总体概览
- 2.2 Overview
- 2.2.1 Totals
- 2.2.2 Nodes
- 2.2.3 Churn statistics
- 2.2.4 Ports and contexts
- 2.2.5 Export definitions / Import definitions
- 2.3 Connections
- 2.4 Channels
- 2.4.1 通道
- 2.5 Exchange
- 2.6 Queue
- 2.7 Admin
- 3. 使用Web管理页面操作RabbitMQ
- 3.1 根据消息队列图,创建交换器
- 3.2 添加消息队列
- 3.3 为交换器绑定消息队列
- 3.4 测试为交换器发送消息
- 4. 小结
进Docker
网站,查询RabbitMQ
镜像,获取后缀带management
的镜像,因为此种镜像带Web
管理页面。
https://hub.docker.com/
1.2 获取镜像
docker pull registry.docker-cn.com/library/rabbitmq:3-management
注意:这里一定要拉去后缀带management的镜像,这种镜像才带web管理页面
1.3 检查镜像docker images
# 简单命令
docker run -d -p 5672:5672 -p 15672:15672 --name myrabbitmq 镜像id
# 带数据卷及开机自启动命令
docker run -d -p 5672:5672 -p 15672:15672 --name myrabbitmq -v /mydata/rabbitmq/data:/mydata/rabbitmq/data --restart always rabbitmq
docker ps
打开浏览器,访问RabbitMQ
的Web
客户端并登陆,本机虚拟机地址为:http://192.168.1.106:15672/
默认用户名和密码为:guest
Web
管理页面如下图:
这里注意下Disk space红色部分!!!
Tab
页共有六个选项卡
Overview
:是RabbitMQ
概览情况,可以查看单个机器和集群中各个节点的情况,包括RabbitMQ
的端口映射信息等,都可以在这个选项卡中查看Connections
:可以查看连接上RabbitMQ
的生产者和消费者的情况Channels
:可以查看通道信息Exchange
:展示所有的交换机信息Queue
:展示所有队列信息Admin
:展示所有用户信息
页面默认是 5
秒刷新一次,展示的是所有的 Virtual host
,右上角可调整
Overview
中有如下功能
Totals
里有准备消费的消息数、待确认的消息数、消息总数以及消息的各种处理速率(发送速率、确认速率、写入硬盘速率等等)
Nodes
展示 RabbitMQ
运行的节点,点击每个节点,可以查看节点的详细信息
这里需要注意下红色部分的Disk space!!!
这个问题也很诡异,说明下具体情况:本人使用docker镜像安装的RabbitMQ,由于C盘空间快用满了,所以每次向RabbitMQ发送消息时,总是失败,后来定位问题,是由于这个磁盘原因。
正常情况应该是第二张图!!!
2.2.3 Churn statistics展示的是 Connection
、Channel
以及 Queue
的创建/关闭速率
这里展示端口映射以及 Web
上下文信息
5672
是RabbitMQ
通信端口15672
是Web
管理页面端口25672
是集群通信端口
可以导入导出当前实例的一些配置信息
展示当前连接上 RabbitMQ
信息,无论是消息生产者还是消息消费者,只要连接上来了这里都会显示出来
属性含义如下:
Name
:连接地址,可点击进入查看具体信息,在详情中可以查看每一个连接的通道数以及其他详细信息,也可以强制关闭一个连接User name
:当前连接使用的用户名State
:当前连接的状态,running
表示运行中;idle
表示空闲;blocked
表示阻塞SSL/TLS
:表示是否使用ssl
进行连接AMQP 0-9-1
:AMQP
协议的版本号Channels
:当前连接创建的通道总数From client
:每秒发出的数据包To client
:每秒收到的数据包
State状态为blocked的原因就是Disk Space不足引起的
2.4 Channels展示通道信息
-
一个连接可以有多个通道,这么多个通道通过多线程实现,一般情况下,我们在通道中创建队列、交换机等
-
生产者的通道一般会立马关闭,消费者是一直监听的,通道几乎是会一直存在
各参数含义如下:
Channel
:通道名称User name
:该通道登录使用的用户名Model
:通道确认模式,C
表示confirm
;T
表示事务Transaction
State
:通道当前的状态,running
表示运行中;idle
表示空闲Unconfirmed
:待确认的消息总数Prefetch
:Prefetch
表示每个消费者最大的能承受的未确认消息数目,简单来说就是用来指定一个消费者一次可以从RabbitMQ
中获取多少条消息并缓存在消费者中,一旦消费者的缓冲区满了,RabbitMQ
将会停止投递新的消息到该消费者中直到它发出有消息被ack
了。总的来说,消费者负责不断处理消息,不断ack
,然后只要unAcked
数少于prefetch * consumer
数目,RabbitMQ
就不断将消息投递过去Unacked
:待ack
的消息总数publish
:消息生产者发送消息的速率confirm
:消息生产者确认消息的速率unroutable (drop)
:表示未被接收,且已经删除了的消息deliver/get
:消息消费者获取消息的速率ack
:消息消费者ack
消息的速率
展示交换机详细信息
各参数含义如下:
-
Type
:表示交换机的类型 -
Features
: 有两个取值D
和I
D 表示交换机持久化,将交换机的属性在服务器内部保存,当 MQ 的服务器发生意外或关闭之后,重启 RabbitMQ 时不需要重新手动或执行代码去建立交换机,交换机会自动建立,相当于一直存在
I 表示这个交换机不可以被消息生产者用来推送消息,仅用来进行交换机和交换机之间的绑定
-
Message rate in
: 表示消息进入的速率 -
Message rate out
: 表示消息出去的速率
下方的Add a new exchange
可以在Web
页面上创建一个新的交换机
展示消息队列详细信息
各项属性含义如下:
-
Name
:表示消息队列名称 -
Type
:表示消息队列的类型,除了上图的classic
,另外还有一种消息类型是Quorum
-
Features
:表示消息队列的特性,D
表示消息队列持久化 -
State
:表示当前队列的状态,running
表示运行中;idle
表示空闲 -
Ready
:表示待消费的消息总数 -
Unacked
:表示待应答的消息总数 -
Total
:表示消息总数Ready+Unacked
-
incoming
:表示消息进入的速率 -
deliver/get
:表示获取消息的速率 -
ack
:表示消息应答的速率
点击 Add a new queue
可以添加一个新的消息队列
点击每一个消息队列的名称,可以进入到消息队列中。进入到消息队列后,可以完成对消息队列的进一步操作,例如:
- 将消息队列和某一个交换机进行绑定
- 发送消息
- 获取一条消息
- 移动一条消息(需要插件的支持)
- 删除消息队列
- 清空消息队列中的消息
- …
具体操作如下图:
注意:队列要和交换机进行绑定,在代码实现过程中必须的步骤
2.7 Admin各项属性含义如下:
Name
:表示用户名称。Tags
:表示角色标签,只能选取一个Can access virtual hosts
:表示允许进入的虚拟主机Has password
:表示这个用户是否设置了密码
常用的两个操作时管理用户和虚拟主机
点击 Add a user
可以添加一个新的用户,添加用户的时候需要给用户设置 Tags
,其实就是用户角色,如下:
none
:不能访问management plugin
management
:用户可以通过AMQP
做的任何事 列出自己可以通过AMQP
登入的virtual hosts
查看自己的virtual hosts
中的queues
,exchanges
和bindings
查看和关闭自己的channels
和connections
查看有关自己的virtual hosts
的“全局”的统计信息,包含其他用户在这些virtual hosts
中的活动policymaker
:management
可以做的任何事 查看、创建和删除自己的 virtual hosts 所属的 policies 和 parametersmonitoring
:management
可以做的任何事 列出所有 virtual hosts,包括他们不能登录的 virtual hosts 查看其他用户的 connections 和 channels 查看节点级别的数据如 clustering 和 memory 使用情况 查看真正的关于所有 virtual hosts 的全局的统计信息administrator
:policymaker
和monitoring
可以做的任何事 创建和删除virtual hosts
查看、创建和删除 users 查看创建和删除permissions
关闭其他用户的connections
impersonator
(模拟者) 模拟者,无法登录管理控制台。
消息队列图:
添加三种交换器
创建完交换器效果图
创建消息队列
创建完消息队列效果图
将交换器与消息队列绑定
绑定完后的效果图
在exchange.direct
交换器中,发送一个消息,路由键的名称为:scorpios
进入到消息队列中,查看消息队列接受到消息的情况
在上图中,点击有消息的消息队列,进入详情页,查看具体消息信息
上面只是RabbitMQ
的入门使用,下面会结合SpringBoot
来介绍RabbitMQ
如何使用。