美文网首页
ribbitMQ介绍

ribbitMQ介绍

作者: 丶清风自来 | 来源:发表于2021-07-16 14:54 被阅读0次

一、什么是MQ?

一个“转发器”。生产者先将消息投递一个叫做“队列”的容器中,然后再从这个容器中取出消息,最后再转发给消息者。
原始型模型如下:

消息队列模型

二、为什么使用MQ?

使用MQ核心场景:异步、解藕、削峰填谷
异步
实例:比如 我们常见的短信验证码功能,当我们在界面点击“获取验证码”后,我们还可以同时进行其他的操作,如输入更新的密码等,此时我们不需要一直等到手机收到短信了才进行下一步操作,这就是异步处理,提高用户体验。

示例

解藕
实例:比如 常见的订单系统,当有订单下单时,我们需要减去库存,但是如果订单和库的逻辑都放在一个系统中,不止处理事件需要很长,系统的耦合性比较高,此时,使用消息中间件,可以实现将订单业务和库存业务抽出来做不同的系统,每次下单的时候可以将下单信息放入消息中间间中,然后库存系统去订阅它,只有有订单数据就进行减去库存操作,这样就将应用解耦了。

解耦

削峰
实例:比如 常见的秒杀系统,如果有5万个商品可以秒杀,没有消息中间件的话,所有的请求都一次性到后台,此时系统很容易卡死,引入消息中间件如消息队列,此时可以在队列中设置好可以存储数据的数量,这样每次用户请求会先到消息列表中,消息队就减去1,当消息队列中存储长度为0时,直接返回秒杀失败,这样就避免了所有用户请求可能在同一时间到达系统后台,达到流量削峰的作用。

削峰

三、常见的消息中间件有哪些?

常见的消息队列中间件:ActiveMQ、RabbitMQ、ZeroMQ、Kafa、MetaMQ、RocketMQ等。

RabbitMQ消息队列,是AMQP规范的一个实现,可以达到跨平台、跨语言。(AMQP(Advanced Message Queuing Protocol)高级消息队列协议: 是一个消息代理的规范,兼容JMS,RabbtisMQ是AMQP的实现。)

四、RabbitMQ中核心内容?

(一)消息服务的两个概念

1、消息代理(message broker):负责接受消息生产者发送的消息

2、目换地(destination):消息最终被消费的地方

3、两者的关系:当消息发送者发送消息以后,将由消息代理接管,消息代理保证消息传递到指定的目的地。

(二)从消息代理到目的地的方式

1、队列:点对点的通信(point -to- point):消息发送者发送消息,消息代理将其放入到一个队列中,消息接收者从队列中获取消息内容,消息读取后被移除出队列。

点对点模式

2、主题:发布publish/订阅subscribe消息通信:发布者发送消息到主题,多个接收者(订阅者)订阅这个主题,那么 就会在消息到达时同时收到消息。

发布-订阅模式

五、RabbitMQ的核心概念

1、Message(消息):不具名,由消息头和消息体租出,消息体是不透明的。消息头是由一系列的可选属性组成 如,routing-key路由器,priority-相对其他消息的优先权,delivery-mode-指出该消息是否需要永久存储等。

2、Publicsher(消息的生产者):是向交换器发布消息的客户端应用程序。

3、Exchange(交换器):用来接受消息并且消息路由给服务中的队列,有四种类型,即决定消息发布到那个队列,具体有以下的类型:

(1)、Direct:消息中的路由键(routingkey),如果和Binding中的binding key 一致,那么就将消息发到对应的队列中。
(2)、Fanout类型: 即广播模式,每个发送到fanout类型的交换器消息,交换器会将消息发送到它绑定的所有队列中,它转发消息是最快的。
(3)、Topic:主题,可以设置模糊匹配,会识别"#"和""号,#表示匹配0个或者多个单词,匹配一个单词,单词之间使用:逗号隔开。
(4)、headers:实现发布订阅模型(基本不使用了)。

4、Queue(消息队列): 消息的容器,一个消息可以放在一个或者多个队列中。

5、Binding(绑定): 用于消息队列和交换器之间的关联,一个绑定就是基于路由键将交换机和消息队列连接起来的路由规则,交换器跟队列的绑定可以是多对多的关系。

6、Connection(网络连接): 如一个Tcp连接。

7、Channel(信道): 多路复用连接中的一条独立的双向数据流通道,信道是建立在真实的TCP连接内的虚拟通道,AMQP命令都是通过信道发出去的,不管是发布消息,订阅队列,还是接收消息,都是通过信道完成,因为对于操作系统来说创建和销毁一个TCP连接都是很昂贵的开销,所以使用信道以实现复用一条TCP连接。

8、Consumer(消费者): 接受和消费消息。

9、Virtaul Hos(虚拟主机): 即小型的RabbitMQ服务器,它表示一批交换器,消息队列和相关对象,连接时必须指定,默认是:/(以路径区分)。

10、Broker: 消息队列服务器实体。

服务实体图

相关文章

  • ribbitMQ介绍

    一、什么是MQ? 一个“转发器”。生产者先将消息投递一个叫做“队列”的容器中,然后再从这个容器中取出消息,最后再转...

  • RabbitMQ快速上手

    一、RibbitMQ的基础介绍 1. 为什么要使用MQ2. 与其他MQ的区别 ActiveMQ:使用Java开发,...

  • Spring整合RibbitMQ

    1.1 搭建SpringBoot环境 我们选择基于Spring-Rabbit去操作RabbitMQ https:/...

  • ribbitmq 3.8.11 window下安装

    因为 1.Erlang的安装 下载地址:http://www.erlang.org/downloads[http:...

  • 2020-04-21springboot2.x rabbitmq

    之前使用kafka只有2种模式1.生产者消费者2.发布订阅 而ribbitmq却有三种模式 fanout,topi...

  • spring boot中rocketmq自定义使用

    说起来这也是个挺悲伤的故事,之前项目中用过ribbitMQ,然后新公司用的rocketMQ,虽然确实两者其实在被s...

  • Runtime介绍---术语介绍

    1. 什么是Runtime Runtime又叫运行时,是一套C语言的API。 我们平时编写的OC代码,底层都是基于...

  • 介绍

    万物终有一天会消失殆尽,诸神出卖黎明,光明为黑暗所湮灭,日月皆痕,海潮鸣泣,幼雏嚎啕,生灵涂炭。 托里奥世纪第20...

  • 介绍😊

    大家好,我是beth,初入简书,不邀自来,还请各位见谅! 先说说我是怎么想着来的吧?这不是刚过了一个寒假嘛...

  • 介绍

    在这个世界上还有三个家族他们不受各个国家联合国管。但他们身上有着使命分别是帝国家族曲国家族圣国家族。他们隐藏在一个...

网友评论

      本文标题:ribbitMQ介绍

      本文链接:https://www.haomeiwen.com/subject/obkbpltx.html