RabbitMq概述与工作模式(1)(上)

简介: RabbitMq概述与工作模式(1)

一,Mq概念

1.1 Mq概述

Mq全称 Message Queue,是在消息传输过程中保存消息的容器,多用于分布式系统之间的通信

1.2 Mq优势

1,应用解耦

如下图,假设a和bcde系统都要实现交互,在不使用mq的情况下,那么就会增加系统之间的耦合性,并且增加系统之间的开销,在使用mq的情况下,a只需将消息发到队列中去即可,bcde直接去mq中取就可以了。

2,异步提速

如下图,在没使用mq的情况下,用户在点击按钮之后,需要同步按顺序做这些事情,5ms查库存,减库存等,300毫秒得到响应,再5ms调用支付系统,以此类推大概需要 20+300+300+300 = 920ms;但是如果使用异步的话,只需要 20+5 = 25ms,可以大大的提升用户体验以及系统吞吐量。

3,削峰填谷

有点类似于限流,在消息高峰的时候,将消息的消费速度进行限制,从而使消息堆积在Mq里面,由于消息长时间堆积,而消费速度进行了限制,所以会有一段长时间的平谷期。从而实现提升系统的稳定性。


1.3 Mq的劣势

1,系统引入的外部依赖越多,系统稳定性越差。一旦 MQ 宕机,就会对业务造成影响

2,MQ 的加入大大增加了系统的复杂度,以前系统间是同步的远程调用,现在是通过 MQ 进行异步调用

二,RabbitMQ 简介

官网:https://www.rabbitmq.com/getstarted.html

2.1 mq的基本组成组件如下

Publisher:生产者,即消息的发送者,用于对消息的发送

Exchange:message 到达 broker 的第一站,根据分发规则,匹配查询表中的 routing key,分发消息到queue 中去。常用的类型有:直连direct (point-to-point), Topic通配符模式 和 Fanout广播模式,但是交换机并没有持久化的能力,只负责消息的转发,所以如果使用可交换机而并没有绑定队列的情况下,会造成数据的丢失。

Queue:消息最终被送到这里等待 consumer 取走

Consumer:消费者,用于去队列中获取消息,从而实现对消息的消费

2.2 Mq基础架构图如下

Broker:用于接收和分发消息的应用,里面主要包含虚拟机,每个虚拟机可以包含多个交换机和队列

Virtual host:存储在Broker中,每个虚拟机可以包含多个交换机和队列

Connection:publisher/consumer 和 broker 之间的 TCP 连接

Channel:由于TCP的建立连接需要进行大量的可靠连接以及TCP的创建和销毁,会浪费很多系统资源,从而降低系统的吞吐量,因此采用信道的方式建立连接,从而减少了大量的TCP可靠连接的开销

三,rabbitmq的安装

3.1 使用docker安装

1,下载rabbitMq镜像

docker pull rabbitmq:management

2,后台方式运行:

docker run --name rabbitmq -d -p 15672:15672 -p 5672:5672 rabbitmq:management

3,OK了,这样rabbitmq3.7.3-manager就安装好了,一定要把manager加上,不然图形化界面出现不了

在服务器上开放5672和15672端口

4,可以查看一下正在运行的容器

docker ps

4,测试连接,可以发现是没问题的。(如果有,那就关闭一下防火墙或者看看端口是否开放)

curl 0.0.0.0:5672

浏览器测试:服务器ip:15672

默认的账号密码都是guest,输入到达以下界面,那么rabbitmq就成功安装了

3.2 图形化界面相关参数讲解

Users

可以增加用户,并且为用户设置权限,该用户在登录之后就可以查看到对应创建的mq的信息,如可以看到对应的虚拟机,交换机和队列等信息

Virtual host

相对于mysql来说,这个虚拟机就是对应的数据库,因此在建表的时候,就需要提前建立数据库,这个mq和mysql一样,在建立交换机或者队列之前需要先建立虚拟机,如下图,可以看该虚拟机的相关信息,点击这个Name也可以为这个虚拟机设置哪个用户可以使用

27f94618cedc47ef893169d30bba6885.pngExchange

交换机,用于分发消息,在建表的时候需要先建立数据库,因此在建立交换机的时候就需要先建立虚拟机,在建立交换机的时候需要选择具体的虚拟机,并且类型有direct直连模式,topic发布订阅模式和fanout模式。

Queue

队列,用于存储发送的消息,也需要绑定虚拟机,同时也可以绑定对应的交换机,如下图,可以发现具体绑定了的虚拟机名字,也可以通过 total 查看消息未被消费的个数等。


























相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
4月前
|
消息中间件
RabbitMQ的 RPC 消息模式你会了吗?
【9月更文挑战第11天】RabbitMQ 的 RPC(远程过程调用)消息模式允许客户端向服务器发送请求并接收响应。其基本原理包括:1) 客户端发送请求,创建回调队列并设置关联标识符;2) 服务器接收请求并发送响应至回调队列;3) 客户端根据关联标识符接收并匹配响应。实现步骤涵盖客户端和服务器的连接、信道创建及请求处理。注意事项包括关联标识符唯一性、回调队列管理、错误处理及性能考虑。RPC 模式适用于构建可靠的分布式应用程序,但需根据需求调整优化。
|
9天前
|
消息中间件 网络协议 RocketMQ
RocketMQ Controller 模式 始终更新成本机ip
ontrollerAddr=192.168.24.241:8878 但是日志输出Update controller leader address to 127.0.0.1:8878。导致访问失败
40 3
|
5月前
|
消息中间件 开发者
【RabbitMQ深度解析】Topic交换器与模式匹配:掌握消息路由的艺术!
【8月更文挑战第24天】在消息队列(MQ)体系中,交换器作为核心组件之一负责消息路由。特别是`topic`类型的交换器,它通过模式匹配实现消息的精准分发,适用于发布-订阅模式。不同于直接交换器和扇形交换器,`topic`交换器支持更复杂的路由策略,通过带有通配符(如 * 和 #)的模式字符串来定义队列与交换器间的绑定关系。
87 2
|
5月前
|
消息中间件
RabbitMQ广播模式
RabbitMQ广播模式
88 1
|
5月前
|
消息中间件 应用服务中间件 网络安全
rabbitMQ镜像模式搭建
rabbitMQ镜像模式搭建
|
6月前
|
消息中间件 传感器 负载均衡
消息队列 MQ使用问题之如何配置一主一从的同步复制模式
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
消息队列 MQ使用问题之如何配置一主一从的同步复制模式
|
6月前
|
消息中间件 存储 Kafka
MetaQ/RocketMQ 原理问题之RocketMQ DLedger融合模式的问题如何解决
MetaQ/RocketMQ 原理问题之RocketMQ DLedger融合模式的问题如何解决
|
5月前
|
消息中间件 Java Maven
RabbitMQ通配符模式
RabbitMQ通配符模式
77 0
|
5月前
|
消息中间件 存储 缓存
RocketMQ - 消费者概述
RocketMQ - 消费者概述
90 0
|
6月前
|
消息中间件 Java Apache
消息队列 MQ使用问题之如何在内外网环境下使用单组节点单副本模式
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。