SpringBoot高级消-息-RabbitMQ基本概念简介

首先对RabbitMQ做一个简单的介绍,和快速入门,RabbitMQ是我们的AMQP,就是我们高级消息队列的一个实现产品,

他的稳定性和可靠性呢非常高,也是我们现在一个非常流行的一个消息中间件,那么我们了解一下他的核心概念,

作为一个消息队列产品,他非常重要的一个概念,就叫Message,也就是我们说的一个消息,这个消息是我们发送者,

给我们消息代理,也就是我们消息队列服务器,发送的数据内容,这个消息他由消息头和消息体组成,就类似于HTTP

协议里面的,请求头和请求体一样,消息体是我们发出去的数据,它是不透明的,我们程序员定制的,而消息头呢,是

一系列可选的属性组,比如一个叫路由键,每一个消息到底要发给谁,是直接由他来指定的,就类似我们要把消息发到

网络里边,指定一个IP地址一样,后面我们详细再说,priority消息的优先权,包括delivery-model消息是否需要持久化

存储,还有我们的publisher,他叫消息的生产者,我们这个publisher,我们简称这个p,他们将我们的message消息,它会

直接先发给我们的服务器,服务器我们之前称之为消息代理,MessagerBoker,所以他是我们的消息发送者,我们也叫消息

生产者,而这个消息呢,他是直接发送给我们消息MessagerBroker,服务器里面有一个叫交换器,这个交换器是我们高级

消息协议里面的,他是用来接收我们这个生产者,发送过来的消息,并且将相应的消息路由到相应的队列,这个交换器跟

我们现实生活中的路由器是类似的,我们把消息交给交换器,这个交换器绑定了很多队列,跟查了很多网线一样,那我们这个

数据到底要到达哪根网线,交换器是通过路由来决定的,你这个路由件是谁就到达什么,在RabbitMQ中呢,我们这个Exchange,

有四种类型,direct,fanout,topic,headers,direct可以实现JMS中点对点,后面三个可以实现发布订阅模型,这些在后来会做

详细的解释,在这一块只需要清楚,消息是通过交换器来决定消息,发往哪个队列,发到哪

Quene我们称之为消息队列,消息队列其实就是用来保存消息的,它是我们消息的容器,也是消息发送到消息服务器,

最终我们来到队列里面,这个队列里面的消息呢,它会一直等到某一个人,连接这个队列以后,将这个队列里面的消息,

取走这个消息队列就不会存在了,这个就是消息队列,而一个消息是如何抵达队列呢,结合我们以前的概念,首先是我们

消息的生产者,这个生产者他创建一个消息,这个消息先发给消息队列服务器,但是先会到达消息服务器的Exchange,

交换器,这个交换器根据你发的消息,指定的路由件,我给你派给某一个队列,在我们这个消息队列服务器里面,可能有

非常多的队列,我根据你这个路由件,把你派发到某一个队列里面,你这个消息就会被放到队列,而这种派发规则,就相当于

我们这个队列,要跟我们这个交换器要做关联,这个关联关系就称为绑定,其实就是我们这个交换器,和我们这些消息队列,

共同组成的一个路由表,而我们说这个交换器,和队列之间的绑定关系,是可以多对多的,一个交换器可以绑定多个队列,那么

一个队列呢,可以由多个交换器都来绑定上,你不管消息发给哪个交换器,比如这三个交换器,绑定这一个队列,都能到达一个

队列,这样我们再来说一个Connection,网络连接,我们要操作消息队列,我们要建立起连接,所谓的信道呢,是为了解决多路

复用的,如果我们每去消息队列里面,来取一个消息,我们都建立一条TCP连接,那么这是非常耗费资源的,所以我们这个消息

队列服务器呢,跟他建连接的时候,它是来建立一条TCP连接,然后如果我们要获取数据,他就在整条的tcp连接里面,来开多个

信道,这个信道就是我们来真正发送数据,订阅队列,接收消息的通道,所以他是为了节省资源的操作

我们叫生产者发布者,发送消息的人就叫消费者Consumer,而我们的VirtualHost,我们称为虚拟主机,

简称叫做Vhost,他其实就是说,把我们整个rabbitmq服务器,我们可以划分出很多的虚拟主机,每一个虚拟主机,

其实就是一个迷你版的rabbitmq,他们都是可以独立运行的,而虚拟主机跟虚拟主机,之间是隔离的,每一个虚拟主机

有他自己的消息队列,包括有自己的交换器,还有自己的路由规则,还有自己的权限控制机制,包括你自己的身份认证的,

加密信息等等,每个虚拟主机都是不一样的,那我们连接我们的rabbitmq的时候呢,我们必须指定我们的虚拟主机,虚拟主机

默认是/,是通过路径来划分的,你这个虚拟主机叫/abc,等等都行,还有我们的broker,我们也称之为messagerbroker,翻译过来

就叫消息代理,所谓的消息代理,指的就是我们这个服务器,那么这些概念之间的相互交互,是这样子的,我们消息的发布者,

也叫生产者,我们这里发了一个消息,这个消息发给消息代理,也就是会我们这个服务器,发给服务器里面的Vhost,叫虚拟主机,

虚拟主机里面有非常多的交换器,我们先把消息发给虚拟主机,虚拟主机发给指定的交换器,这个交换器再根据我们的路由件,

我们要看到底要把扔到哪个消息队列里面,那么这个路由规则,就是通过绑定关系来表示的,那么当我们消息到达消息队列以后,

我们消费者就可以从消息队列里面取消息了,怎么取呢,我们消费者就跟消息队列建立起连接,这个建立起连接以后呢,为了资源

多路复用,我们每一条TCP连接里面,开辟很多的管道,这个管道里边数据进行交互,我们从消息队列里面拿到的数据,通过这个管道

返回给消费者

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Leon_Jinhai_Sun

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

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值