硬卷消息中间件系列(四):RabbitMQ 管理界面详解

👉 这是一个或许对你有用的社群

🐱 一对一交流/面试小册/简历优化/求职解惑,欢迎加入「芋道快速开发平台」知识星球。下面是星球提供的部分资料: 

151fa7fa94d57bb9f715e9ca04c53dd1.gif

👉这是一个或许对你有用的开源项目

国产 Star 破 10w+ 的开源项目,前端包括管理后台 + 微信小程序,后端支持单体和微服务架构。

功能涵盖 RBAC 权限、SaaS 多租户、数据权限、商城、支付、工作流、大屏报表、微信公众号等等功能:

  • Boot 地址:https://gitee.com/zhijiantianya/ruoyi-vue-pro

  • Cloud 地址:https://gitee.com/zhijiantianya/yudao-cloud

  • 视频教程:https://doc.iocoder.cn

来源:民工哥技术之路

ae69aac3f988322983b1475b56979119.jpeg


前面介绍了 RabbitMQ 基础入门、安装与简单使用、基础配置等相关的知识点,今天我将详细的为大家介绍 RabbitMQ 管理界面 相关知识,希望大家能够从中收获多多!如有帮助,请点在看转发 支持一波!!!

管理界面概览

8777558df8ff8ce347e658ef51a87ca9.png

该页面是RabbitMQ主界面,总共有六个选项卡:

Overview

MQ的概览情况,里面包括集群各个节点的信息、端口映射信息。

connections:

无论生产者还是消费者,都需要与RabbitMQ建立连接后才可以完成消息的生产和消费,在这里可以查看连接情况。

channels:

通道,建立连接后,会形成通道,消息的投递获取依赖通道。

Exchanges:

交换机,用来实现消息的路由。

Queues:

队列,即消息队列,消息存放在队列中,等待消费,消费后被移除队列。

Admin:

管理用户。

下面将对各个模块中的子模块进行详细的介绍。

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/ruoyi-vue-pro

  • 视频教程:https://doc.iocoder.cn/video/

Overview 模块

Node服务节点
d877d41d3dfaa4066b4281e862c0ed22.png

Nodes项,显示的是RabbitMQ的服务节点,目前有一个本地节点,可以有多个服务节点(比如集群的时候)。

ports端口
ed2d0df37f1d0f84057307aa9823ae19.png

这里一共有三个端口,其中5672是amqp协议的端口,15672是RabbitMQ的管理工具端口(这就是我们现在操作的),25672是做集群的端口。

如果我们现在的Java程序要与RabbitMQ进行交互,需要和哪个端口交互呢?是5672。因为Java客户端需要与RabbitMQ服务进行数据交互,必须要遵循amqp协议协议,所以要走5672端口。

而15672是RabbitMQ的管理工具的端口,与服务无关,仅仅是管理工具运行的端口。

Export definitions和Import definitions
36293ec55663e8b4309b2245682d2c0a.png
  • Export definitions为导出RabbitMQ的基本信息

  • Import definitions为导入RabbitMQ的基本信息

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/yudao-cloud

  • 视频教程:https://doc.iocoder.cn/video/

Admin模块

添加用户

581f3577dc3f124ae850bce37a4ffa0a.png上面的Tags选项,其实是指定用户的角色,可选的有以下几个:

超级管理员(administrator)

可登陆管理控制台,可查看所有的信息,并且可以对用户,策略(policy)进行操作。

监控者(monitoring)

可登陆管理控制台,同时可以查看rabbitmq节点的相关信息(进程数,内存使用情况,磁盘使用情况等)

策略制定者(policymaker)

可登陆管理控制台, 同时可以对policy进行管理。但无法查看节点的相关信息(上图红框标识的部分)。

普通管理者(management)

仅可登陆管理控制台,无法看到节点信息,也无法对策略进行管理。

其他

无法登陆管理控制台,通常就是普通的生产者和消费者。

创建虚拟机Virtual Hosts

为了让各个用户可以互不干扰的工作,RabbitMQ添加了虚拟主机(Virtual Hosts)的概念。其实就是一个独立的访问路径,不同用户使用不同路径,各自有自己的队列、交换机,互相不会影响。

254a1d73221104c0db9d873790b74ebe.png 8ee5616081a9491990a855de30ed4e6f.png

创建好虚拟主机,我们还要给用户添加访问权限,点击添加好的虚拟主机:

b19c2808392daf5b64447fe2be78f4ef.png

进入虚拟主机设置界面,给用户设置权限

f88a653045e283ebef465f7f289c23f7.png

Connections 连接

在这里可以看客户端连接RabbitMQ服务的信息。目前尚未有客户端连接,所以上面看不到连接信息。

19a7989e6a5a8a2a214a5fa6127fabde.png

Channels(通道)

在这里可以看客户端连接RabbitMQ通道的信息。通道是建立在连接之上的,因为现在没有连接,所以也没有通道。

69e4caf4f17a8b1e1f3adbd8b8d0f56c.png
Channel  #通道名称。
User name  #该通道登录使用的用户名。
Model  #通道确认模式,C 表示 confirm;T 表示事务。
State  #通道当前的状态,running 表示运行中;idle 表示空闲。
Unconfirmed  #待确认的消息总数。
Prefetch  #Prefetch 表示每个消费者最大的能承受的未确认消息数目,简单来说就是用来指定一个消费者一次可以从 RabbitMQ 中获取多少条消息并缓存在消费者中,一旦消费者的缓冲区满了,RabbitMQ 将会停止投递新的消息到该消费者中直到它发出有消息被 ack 了。总的来说,消费者负责不断处理消息,不断 ack,然后只要 unAcked 数少于 prefetch * consumer 数目,RabbitMQ 就不断将消息投递过去。
Unacker  #待 ack 的消息总数。
publish  #消息生产者发送消息的速率。
confirm  #消息生产者确认消息的速率。
unroutable (drop)  #表示未被接收,且已经删除了的消息。
deliver/get  #消息消费者获取消息的速率。
ack  #消息消费者 ack 消息的速率。

Exchanges(交换机)

Exchanges选项有交换机的信息,并且可以通过Add a new exchange来添加交换机。

da09f1288914f22cb1c1667f3ae6643d.png 0339b578cdc86dc3134f70cca01002b1.png
添加exchange的属性说明:
Name  #exchange的名称
Type  #exchange的类型,可选值为direct, headers, topic, fanout
Durability  #是否需要持久化, Durable表示持久化,即rabbitmq重启后exchange不会被清除,依旧存在
Auto Delete  #是否自动删除,默认是No。自动删除的触发条件是:当绑定到该exchange上的所有queue和exchange都已经解除绑定时,rabbitmq自动删除该exchange。
Internal #是否为rabbitmq内部使用,默认NO。如果是,客户端不能直接投递消息到此交换器,只能由rabbitmq自己向这个exchange投递消息,一般用于exchange到exchange的绑定。
Arguments #其他选项参数, 一般设置为[],不需要。

Queues

Queues选项有queue的信息,并且可以通过Add a new queue来添加queue。

6b74283c3f6d47024ded74acc09f2b0f.png
添加queue属性说明:
Name  #queue的名称

Durability  #Durable表示持久化,即rabbitmq重启后,不会清除该queue,保留queue
Auto delete#是否自动删除,默认NO。自动删除触发条件:当所有消费客户端连接断开后,会删除该消息队列。
  • 当Queue中的 autoDelete 属性被设置为true时,那么,当所有消息接收者宕机或者关闭连接后,消息队列则会删除,消息发送者一直发送消息,当消息接收者重新启动恢复正常后,会接收最新的消息,而宕机期间的消息则会丢失。

  • 当Quere中的 autoDelete 属性被设置为false时,那么,当消息接收者宕机,关闭后,消息队列不会删除,消息发送者一直发送消息,当消息接收者重新启动恢复正常后,会接收包括宕机期间的消息。

Arguments  #其他选项参数,如TTL,Auto expire等,在该选项下面有参数选择。

下面,我创建一个name为myqueue的消息队列,创建完成后,会在queue表格中看到。

9af31b2f578253cbfa835e816916dc80.png

创建了exchange和queue之后,我们还需要将queue绑定到exchange。下面我将上面创建的myqueue绑定到exchange上,在queues页面,点击我们需要绑定的队列,进入到详情页,在Add binding to this queue中填入exchange名称和路由键。然后就可以在对应的exchange详情页的bingdings看到绑定信息。

cadc0ce78ef71405d035b3efe8788c0f.png a3d0f296009a511855a3174c91ec871b.png

实际操作发送消费消息

Direct

DirectExchange 的路由策略是将消息队列绑定到一个 DirectExchange 上,当一条消息到达 DirectExchange 时会被转发到与该条消息 routing key 相同的 Queue 上,例如消息队列名为 “queue.test”,则 routingkey 为 “queue.test” 的消息会被该消息队列接收。

新建direct交换机:
1a87a3ea01b74505b02aebd14d3b4560.png 4a97083a71296e84c76d93abed58938d.png
新建普通队列
59852607ec72cf2a31a54d6f6880d58b.png d357946a77bcf6b0a08bf2f02ac65d2f.png
交换机和队列建立绑定关系

点击交换机进行绑定:9931159e0c27e3614b004d4bc41a6b78.png

点击交换机发送消息:这里我发送了两条

183556ae75e203f79f6acca0ae1dab8e.png

发动成功:

4eb05965776c54bc9ef55d9ee7ac644a.png 34112dd3c154309a64d5bcac8248db06.png

点击队列的消息;

35a1a33f46ceb382ea17914e22bf6ec4.png
Fanout

FanoutExchange 的数据交换策略是把所有到达 FanoutExchange 的消息转发给所有与它绑定的 Queue 上,在这种策略中,routingkey 将不起任何作用;

新建队列:

3778cf8d57c2e2563bff139db6f84282.png

新建交换机:

2816d43041138ca28020e337f706cdfd.png

交换机和每个队列帮绑定:

cccc1c5efc341d48ddedc09af8bc675f.png

然后给这个交换机发送消息两条消息:我们看到每个队列都收到两条消息;

7eef63e4e32c212bbd0d18a9d3c72181.png
Topic

TopicExchange 是比较复杂但是也比较灵活的一种路由策略,在 TopicExchange 中,Queue 通过 routingkey 绑定到 TopicExchange 上,当消息到达 TopicExchange 后,TopicExchange 根据消息的 routingkey 将消息路由到一个或者多个 Queue 上;*(星号)可以代替一个单词,#(井号)可以替代零个或多个单词。

首先创建 TopicExchange,参数和前面的一致。然后创建三个 Queue,第一个 Queue 用来存储和 “xiaomi” 有关的消息,第二个 Queue 用来存储和 “huawei” 有关的消息,第三个 Queue 用来存储和 “phone” 有关的消息。

将三个 Queue 分别绑定到 TopicExchange 上,第一个 Binding 中的 “xiaomi.#” 表示消息的 routingkey 凡是以 “xiaomi” 开头的,都将被路由到名称为 “xiaomi” 的 Queue 上,第二个 Binding 中的 “huawei.#” 表示消息的 routingkey 凡是以 “huawei” 开头的,都将被路由到名称为 “huawei” 的 Queue 上,第三个 Binding 中的 “#.phone.#” 则表示消息的 routingkey 中凡是包含 “phone” 的,都将被路由到名称为 “phone” 的 Queue 上。

第一条消息将被路由到名称为 “xiaomi” 的 Queue 上,第二条消息将被路由到名为 “huawei” 的 Queue 上,第三条消息将被路由到名为 “xiaomi” 以及名为 “phone” 的 Queue 上,第四条消息将被路由到名为 “huawei” 以及名为 “phone” 的 Queue 上,最后一条消息则将被路由到名为 “phone” 的 Queue 上。


欢迎加入我的知识星球,全面提升技术能力。

👉 加入方式,长按”或“扫描”下方二维码噢

91e2ba3f498dd1850661b13ba974f853.png

星球的内容包括:项目实战、面试招聘、源码解析、学习路线。

1d3cecb307a1f4fc17494aa61a62b762.png

1a316ccb3c6ec809f0b5729027cf88e8.png55d2082a2ef2f5cdc279f1af0bf35e8d.png373514537253cae2e4d9f3eafad1ffcf.png107c9e86ee3d41aa592829872ed5704a.png

文章有帮助的话,在看,转发吧。
谢谢支持哟 (*^__^*)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值