首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >硬卷消息中间件系列(四):RabbitMQ 管理界面详解

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

作者头像
民工哥
发布2023-09-19 15:32:21
发布2023-09-19 15:32:21
5.1K0
举报

管理界面概览

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

Overview

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

connections:

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

channels:

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

Exchanges:

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

Queues:

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

Admin:

管理用户。

下面将对各个模块中的子模块进行详细的介绍。更多关于消息中间件 RabbitMQ 系列的学习文章,请参阅:消息中间件 RabbitMQ ,本系列持续更新中。

Overview 模块

Node服务节点

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

ports端口

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

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

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

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

Admin模块

添加用户

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

超级管理员(administrator)

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

监控者(monitoring)

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

策略制定者(policymaker)

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

普通管理者(management)

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

其他

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

创建虚拟机Virtual Hosts

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

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

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

Connections 连接

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

Channels(通道)

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

代码语言:javascript
复制
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来添加交换机。

添加exchange的属性说明:
代码语言:javascript
复制
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。

添加queue属性说明:
代码语言:javascript
复制
Name  #queue的名称

Durability  #Durable表示持久化,即rabbitmq重启后,不会清除该queue,保留queue
代码语言:javascript
复制
Auto delete#是否自动删除,默认NO。自动删除触发条件:当所有消费客户端连接断开后,会删除该消息队列。
  • 当Queue中的 autoDelete 属性被设置为true时,那么,当所有消息接收者宕机或者关闭连接后,消息队列则会删除,消息发送者一直发送消息,当消息接收者重新启动恢复正常后,会接收最新的消息,而宕机期间的消息则会丢失。
  • 当Quere中的 autoDelete 属性被设置为false时,那么,当消息接收者宕机,关闭后,消息队列不会删除,消息发送者一直发送消息,当消息接收者重新启动恢复正常后,会接收包括宕机期间的消息。
代码语言:javascript
复制
Arguments  #其他选项参数,如TTL,Auto expire等,在该选项下面有参数选择。

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

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

更多关于消息中间件 RabbitMQ 系列的学习文章,请参阅:消息中间件 RabbitMQ ,本系列持续更新中。

实际操作发送消费消息

Direct

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

新建direct交换机:
新建普通队列
交换机和队列建立绑定关系

点击交换机进行绑定:

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

发动成功:

点击队列的消息;

Fanout

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

新建队列:

新建交换机:

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

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

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 上。

更多关于消息中间件 RabbitMQ 系列的学习文章,请参阅:消息中间件 RabbitMQ ,本系列持续更新中。

参考文章:https://blog.csdn.net/qq_42697508/article /details/123662240 https://blog.csdn.net/wuzj1314/ article/details/131415670

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-09-11 08:51,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 民工哥技术之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 管理界面概览
    • Overview
    • connections:
    • channels:
    • Exchanges:
    • Queues:
    • Admin:
  • Overview 模块
    • Node服务节点
    • ports端口
    • Export definitions和Import definitions
  • Admin模块
    • 添加用户
    • 创建虚拟机Virtual Hosts
  • Connections 连接
  • Channels(通道)
  • Exchanges(交换机)
  • Queues
  • 实际操作发送消费消息
    • Direct
    • Fanout
    • Topic
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档