RabbitMQ之核心概念与控制台的使用

消息队列MQ

消息队列概述

消息中间件(消息队列)是基础数据结构中“先进先出”的一种数据结构,是分布式系统中重要的组件,主要解决应用解耦,异步消息(异步提速),流量削锋(并发请求堆积MQ,MQ持续消费)和消息通讯等问题实现高性能,高可用,可伸缩和最终一致性架构。使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ

优势描述
应用解耦一个业务需要多模块共同实现,用MQ发送消息,其余模块消费MQ消息,即可实现业务
异步消息主业务执行后从属业务通过MQ,异步执行,减低业务的响应时间,提高用户体验。
流量削锋高并发情况下,业务异步处理,提供高峰期业务处理能力,避免系统瘫痪。
劣势描述
系统可用性降低外部依赖越多,系统稳定性越差,MQ 宕机,业务造成影响
系统复杂度提高以前系统间是同步远程调用,Mq是异步,需要考虑消息丢失、消息重复消费、消息传递的顺序性。
业务一致性主业务和从属业务一致性的处理,主业务A向从业务BCD发送消息,BC处理成功,D处理失败

AMQP和JMS

MQ是消息通信的模型,并不是具体实现。实现MQ的有两种主流方式:AMQP、JMS。

AMQP是一种协议,而JMS是Java消息服务应用程序接口。

两者区别

AMQPJMS
AMQP是通过规定协议来统一数据交互的格式JMS是定义统一的接口,来对消息操作进行统一
AMQP只是协议,不规定实现方式,是跨语言的JMS限定必须使用Java语言
AMQP的消息模式更丰富JMS规定了两种消息模式

常见的 MQ 产品

特性ActiveMQRabbitMQRocketMQKafka
单机吞吐量万级,比 RocketMQ、Kafka 低一个数量级同 ActiveMQ10 万级,支撑高吞吐10 万级,高吞吐,一般配合大数据类的系统来进行实时数据计算、日志采集等场景
topic 数量对吞吐量的影响topic 可以达到几百/几千的级别,吞吐量会有较小幅度的下降,这是 RocketMQ 的一大优势,在同等机器下,可以支撑大量的 topictopic 从几十到几百个时候,吞吐量会大幅度下降,在同等机器下,Kafka 尽量保证 topic 数量不要过多,如果要支撑大规模的 topic,需要增加更多的机器资源
时效性ms 级微秒级,这是 RabbitMQ 的一大特点,延迟最低ms 级延迟在 ms 级以内
可用性高,基于主从架构实现高可用同 ActiveMQ非常高,分布式架构非常高,分布式,一个数据多个副本,少数机器宕机,不会丢失数据,不会导致不可用
消息可靠性有较低的概率丢失数据基本不丢经过参数优化配置,可以做到 0 丢失同 RocketMQ
功能支持MQ 领域的功能极其完备基于 erlang 开发,并发能力很强,性能极好,延时很低MQ 功能较为完善,还是分布式的,扩展性好功能较为简单,主要支持简单的 MQ 功能,在大数据领域的实时计算以及日志采集被大规模使用

RabbitMq

RabbitMq概述

RabbitMQ(RabbitMQ官网)是由erlang语言开发,基于AMQP(Advanced Message Queue 高级消息队列协议)协议实现的消息队列,,它是一个网络协议,是应用层协议的一个开放标准,为面向消息的中间件设计,是一种应用程序之间的通信方法,消息队列广泛应用在分布式系统中。

RabbitMQ的特点

1.可靠性(Reliability)

RabbitMQ 使用一些机制来保证可靠性,如持久化、传输确认、发布确认。

2.灵活的路由(Flexible Routing)

在消息进入队列之前,通过 Exchange 来路由消息的。对于典型的路由功能,RabbitMQ已经提供了一些内置的 Exchange 来实现。针对更复杂的路由功能,可以将多个Exchange 绑定在一起,也通过插件机制实现自己的 Exchange 。

3.消息集群(Clustering)

多个 RabbitMQ 服务器可以组成一个集群,形成一个逻辑 Broker 。

4.高可用(Highly Available Queues)

队列可以在集群中的机器上进行镜像,使得在部分节点出问题的情况下队列仍然可用。

5.多种协议(Multi-protocol)

RabbitMQ 支持多种消息队列协议,比如 STOMP、MQTT 等等。

6.多语言客户端(Many Clients)

RabbitMQ 几乎支持所有常用语言,比如 Java、.NET、Ruby 等等。

7.管理界面(Management UI)

RabbitMQ 提供了一个易用的用户界面,使得用户可以监控和管理消息 Broker 的许多方面。

8.跟踪机制(Tracing)

如果消息异常,RabbitMQ 提供了消息跟踪机制,使用者可以找出发生了什么。

9.插件机制(Plugin System)

RabbitMQ 提供了许多插件,来从多方面进行扩展,也可以编写自己的插件。

RabbitMq的架构及相关概念

在这里插入图片描述

术语描述
producer消息生产者,数据的发送方。消息生产者连接RabbitMQ服务器然后将消息投递到Exchange。
Consumer消息消费者,数据的接收方。消息消费者订阅队列,RabbitMQ将Queue中的消息发送到消息消费者。
Connection网络连接,生产者与消费者 和 broker 之间的 TCP 连接
Channel信道。消息读写等操作在信道中进行。Channel 是在 connection 内部建立的逻辑连接,channel 之间是完全隔离的。多路复用连接中的一条独立的双向数据流通道。为会话提供物理传输介质。Channel 作为轻量级的连接, 极大减少了操作系统建立 TCP 连接开销。
Broker接收和分发消息的应用,标识消息队列服务器实体,或者说是消息中间件的服务节点,一个broker就好比是一个RabbitMQ 服务器。
Virtual host虚拟主机,标识一批交换机、消息队列和相关对象。每个Virtual Hosts相当于一个相对独立的RabbitMQ服务器,每个VirtualHost之间是相互隔离的。exchange、queue、message不能互通。类似MySQL中的db。
Exchange生产者将消息发送到Exchange(交换器),由Exchange将消息路由到一个或多个Queue中(或者丢弃)。Exchange并不存储消息。常用的交换器常用类型有direct、topic、fanout、headers四种,每种类型对应不同的路由规则。
Queue消息队列,用于存储消息。消息消费者就是通过订阅队列来获取消息的,RabbitMQ中的消息都只能存储在Queue中,生产者生产消息并最终投递到Queue中,消费者可以从Queue中获取消息并消费。
Binding绑定,交换器和消息队列之间的虚拟连接。信息被保存到 exchange 中的查询表中,用于 message 的分发依据
RoutingKey路由键,生产者将消息发送给交换器的时候,会发送一个RoutingKey,用来指定路由规则,这样交换器就知道把消息发送到哪个队列。而routing key需要与Exchange Type及binding key联合使用才能最终生效。
ClientAMQP连接或者会话的发起者,客户端生产和消费消息,服务器存储和路由消息。

RabbitMq的工作模式

RabbitMQ提供了6种模式(官网模式介绍):简单模式,work模式,Publish/Subscribe发布与订阅模式,Routing路由模式,Topics主题模式,RPC远程调用模式

在这里插入图片描述

在这里插入图片描述

RabbitMq运行过程

1.生产者发送消息

1. 生产者创建连接(Connection),开启一个信道(Channel),连接到RabbitMQ Broker;
2. 声明队列并设置属性;如是否独占连接,是否持久化,是否自动删除;
3. 将路由键与队列进行绑定;
4. 发送消息至RabbitMQ Broker;
5. 关闭信道;
6. 关闭连接;
7. 

2.消费者接收消息

1. 消费者创建连接(Connection),开启一个信道(Channel),连接到RabbitMQ Broker
2. 向Broker 请求消费者相应队列中的消息,设置相应的回调函数;
3. 等待Broker回应闭关投递响应队列中的消息,消费者接收消息;
4. 确认(ack,自动确认)接收到的消息;
5. RabbitMQ从队列中删除相应已经被确认的消息;
6. 信道与连接不关闭,监听消息

下载与安装

1.访问(RabbitMQ官网)点击Get Started
在这里插入图片描述
2.选择下载或者查看教程文档
在这里插入图片描述
3.点击Download+Installation ,据系统选择下载,需注意rabbitMq与erlang 版本对应关系
在这里插入图片描述
4.点击Erlang Versions查看rabbitMq与erlang版本对应关系
在这里插入图片描述
5.点击RabbitMQ Tutorials,查看RabbitMq文档教程
在这里插入图片描述
6.使用Docker快速安装RabbitMq:RabbitMq的安装

控制台的使用

RabbitMQ安装好后,访问控制台地址:http://ip地址:15672,使用用户名:guest和密码:guest登录。然后进行相应的管理操作。

用户管理

1.角色说明

角色描述
超级管理员(administrator)可登陆管理控制台,可查看所有的信息,并且可以对用户,策略(policy)进行操作。
监控者(monitoring)可登陆管理控制台,同时可以查看rabbitmq节点的相关信息(进程数,内存使用情况,磁盘使用情况等)
策略制定者(policymaker)可登陆管理控制台, 同时可以对policy进行管理。但无法查看节点的相关信息(上图红框标识的部分)。
普通管理者(management)仅可登陆管理控制台,无法看到节点信息,也无法对策略进行管理。
其他无法登陆管理控制台,通常就是普通的生产者和消费者。

2.添加用户
在这里插入图片描述
在这里插入图片描述

Virtual Hosts管理

在RabbitMQ中可以使用虚拟消息服务器Virtual Host,每个Virtual Hosts相当于一个相对独立的RabbitMQ服务器,每个VirtualHost之间是相互隔离的。exchange、queue、message不能互通。 Virtual Name一般以/开头。

1.创建Virtual Hosts
在这里插入图片描述
在这里插入图片描述

2.设置Virtual Hosts权限
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CodeDevMaster

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值