深度剖析RabbitMQ:从基础组件到管理页面详解

文章目录

一、简介

rabbitmq-management是RabbitMq web管理端,用的是erlang的cowboy框架进行开发。web页面包括Overview(概述)、Connections(连接)、Channels(通道)、Exchanges(交换器)、Queues(队列)、Admin(用户管理)。

⾸先⼀共有六个选项卡:

  1. Overview:这⾥可以概览 RabbitMQ 的整体情况,如果是集群,也可以查看集群中各个节点的情况。包括 RabbitMQ 的端⼝映射信息等,都可以在这个选项卡中查看。
  2. Connections:这个选项卡中是连接上 RabbitMQ 的⽣产者和消费者的情况。
  3. Channels:这⾥展⽰的是"通道"信息,关于"通道"和"连接"的关系
  4. Exchange:这⾥展⽰所有的交换机信息。
  5. Queue:这⾥展⽰所有的队列信息。
  6. Admin:这⾥展⽰所有用户信息

二、Overview

2.1 Overview->Totals

第一块,所有队列的阻塞情况

Ready:待消费的消息总数。

Unacked:待应答的消息总数。

Total:总数 Ready+Unacked。

第二块,所有队列的消费情况。速率=(num1-num0)/(s1-s0) num1:s1时刻的个数。num0:s0时刻的个数。

Publish:producter pub消息的速率。

Publisher confirm:broker确认pub消息的速率。

Deliver(manual ack):customer手动确认的速率。

Deliver( auto ack):customer自动确认的速率。

Consumer ack:customer正在确认的速率。

Redelivered:正在传递'redelivered'标志集的消息的速率。

Get (manual ack):响应basic.get而要求确认的消息的传输速率。

Get (auto ack):响应于basic.get而发送不需要确认的消息的速率。

Return:将basic.return发送给producter的速率。

Disk read:queue从磁盘读取消息的速率。

Disk write:queue从磁盘写入消息的速率。

整体角色的个数

Connections:client的tcp连接的总数。

Channels:通道的总数。

Exchange:交换器的总数。

Queues:队列的总数。

Consumers:消费者的总数。

2.2 Overview->Nodes

启动一个broker都会产生一个node。

broker的属性

Name:broker名称

File descriptors:broker打开的文件描述符和限制。

Socket descriptors:broker管理的网络套接字数量和限制。当限制被耗尽时,RabbitMQ将停止接受新的网络连接。

Erlang processes:erlang启动的进程数。

Memory:当前broker占用的内存。

Disk space:当前broker占用的硬盘。

Uptime:当前broker持续运行的时长。

Info:节点角色(内存、磁盘)。

Reset stats:节点信息统计(node)。

2.3 Overview->Churn statistics

展示的是 Connection、Channel 以及 Queue 的创建/关闭速率。

2.4 Overview->Ports and contexts

5672 是 RabbitMQ 通信端口。

15672 是 Web 管理页面端口。

25672 是集群通信端口。

2.5 Overview->Export definitions

定义由用户,虚拟主机,权限,参数,交换,队列和绑定组成。 它们不包括队列的内容或集群名称。 独占队列不会被导出。

2.6 Overview->Import definitions

导入的定义将与当前定义合并。 如果在导入过程中发生错误,则所做的任何更改都不会回滚。

三、Connections

当前所有客户端活动的连接。包括生成者和消费者。

连接的属性

Virtual host:所属的虚拟主机。

Name:名称。

User name:使用的用户名。

State:当前的状态,running:运行中;idle:空闲。

SSL/TLS:是否使用ssl进行连接。

Protocol:使用的协议。

Channels:创建的channel的总数。

From client:每秒发出的数据包。

To client:每秒收到的数据包。

四、Channels

当前连接所有创建的通道。

通道的属性

channel:名称。

Virtual host:所属的虚拟主机。

User name:使用的用户名。

Mode:渠道保证模式。 可以是以下之一,或者不是:C: confirm。T:transactional(事务)。

State :当前的状态,running:运行中;idle:空闲。

Unconfirmed:待confirm的消息总数。

Prefetch:设置的prefetch的个数。

Unacker:待ack的消息总数。

publish:producter pub消息的速率。

confirm:producter confirm消息的速率。

deliver/get:consumer 获取消息的速率。

ack:consumer ack消息的速率。

五、Exchanges

交换器属性

Virtual host:所属的虚拟主机。

Name:名称。

Type:exchange type,具体的type可以查看RabbitMq系列之一:基础概念。

Features:功能。 可以是以下之一,或者不是:D: 持久化。T:Internal,存在改功能表示这个exchange不可以被client用来推送消息,仅用来进行exchange和exchange之间的绑定,否则可以推送消息也可以绑定。

Message rate in:消息进入的速率。

Message rate out:消息出去的速率。

Exchange 有四种类型:direct、topic、fanout、headers

Direct :交换机会将消息中的Routing key与该Exchange所有Binding中的Routing key进行匹配,如果相等,就发送到该Binding对应的Queue中。

Fanout :交换机会将接收到的消息发送给所有与之绑定的队列。

Topic :将消息中的Routing key与该Exchange所有Binding中的Routing key进行匹配,匹配成功发送到该Binding对应的Queue中。routingKey必须是由点隔开的一系列的标识符组成(根据消息的特性以.隔开)。

复制代码
*匹配一个标识符
 #匹配0个或多个标识符

Headers :分发消息不依赖路由键,使用发送消息basicProperties对象中的headers来匹配的,将消息中的headers与该交换机中所有Binding中的参数进行匹配。

六、Queues

队列的属性

Virtual host:所属的虚拟主机。

Name:名称。

Features:功能。 可以是以下之一,或者不是:D: 持久化。

State:当前的状态,running:运行中;idle:空闲。

Ready:待消费的消息总数。

Unacked:待应答的消息总数。

Total:总数 Ready+Unacked。

incoming:消息进入的速率。

deliver/get:消息获取的速率。

ack:消息应答的速率。

七、Admin

用户属性

Name:名称。

Tags:角色标签,只能选取一个。

Can access virtual hosts:允许进入的vhost。

Has password:设置了密码。

administrator (超级管理员)

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

monitoring(监控者)

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

policymaker(策略制定者)

可登陆管理控制台(启用management plugin的情况下), 同时可以对policy进行管理。

management(普通管理者)

仅可登陆管理控制台(启用management plugin的情况下),无法看到节点信息,也无法对策略进行管理。

none(其他)

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

相关推荐
用户8307196840822 天前
RabbitMQ vs RocketMQ 事务大对决:一个在“裸奔”,一个在“开挂”?
后端·rabbitmq·rocketmq
初次攀爬者3 天前
RabbitMQ的消息模式和高级特性
后端·消息队列·rabbitmq
初次攀爬者5 天前
ZooKeeper 实现分布式锁的两种方式
分布式·后端·zookeeper
让我上个超影吧6 天前
消息队列——RabbitMQ(高级)
java·rabbitmq
塔中妖6 天前
Windows 安装 RabbitMQ 详细教程(含 Erlang 环境配置)
windows·rabbitmq·erlang
断手当码农6 天前
Redis 实现分布式锁的三种方式
数据库·redis·分布式
初次攀爬者6 天前
Redis分布式锁实现的三种方式-基于setnx,lua脚本和Redisson
redis·分布式·后端
业精于勤_荒于稀6 天前
物流订单系统99.99%可用性全链路容灾体系落地操作手册
分布式
Ronin3056 天前
信道管理模块和异步线程模块
开发语言·c++·rabbitmq·异步线程·信道管理
Asher05096 天前
Hadoop核心技术与实战指南
大数据·hadoop·分布式