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连接里面,开辟很多的管道,这个管道里边数据进行交互,我们从消息队列里面拿到的数据,通过这个管道返回给消费者
SpringBoot高级消-息-RabbitMQ基本概念简介相关推荐
- RabbitMQ 基本概念与高级特性
文章目录 1. 什么是消息队列 1.1 消息队列概述 1.2 使用消息队列的优势 1.3 使用消息队列的劣势 1.4 常见的消息队列产品对比 2. RabbitMQ 基本概念 2.1 RabbitMQ ...
- SpringBoot高级教程
SpringBoot的高级教程 一.SpringBoot缓存 缓存的场景 临时性数据存储[校验码] 避免频繁因为相同的内容查询数据库[查询的信息] 1.JSR107缓存规范 用的比较少 Java Ca ...
- springboot高级篇及springboot1.5转springboot2.17所遇到的坑
SpringBoot的高级教程 一.SpringBoot缓存 缓存的场景 临时性数据存储[校验码] 避免频繁因为相同的内容查询数据库[查询的信息] 1.JSR107缓存规范 用的比较少 Java Ca ...
- SpringBoot高级教程(转)
SpringBoot的高级教程 注:此文章转载于GitHub,但是原文章图片加载出错,因此我整理了一下,并非本人原创,在此感谢原作者! 附上原文视频课地址供大家学习: www.bilibili.com ...
- SpringBoot高级
九.SpringBoot缓存 缓存的场景 临时性数据存储[校验码] 避免频繁因为相同的内容查询数据库[查询的信息] 1.JSR107缓存规范 用的比较少 Java Caching定义了5个核心接口 C ...
- 项目背景介绍及文件系统基本概念简介
文章目录 1 项目背景介绍 2 文件系统基本概念简介 2.1 文件系统接口 2.2 存储的基本单位 2.3 文件存储单位 2.4 文件结构 3 海量存储选用大文件结构的原因 1 项目背景介绍 根据淘宝 ...
- springboot高级——消息队列相关
写在前边:本文学习尚硅谷的springboot高级整理笔记. 消息队列是什么,有什么好处? 我们可以把消息队列比作是一个存放消息的容器,当我们需要使用消息的时候可以取出消息供自己使用.消息队列是分布式 ...
- 入门RabbitMQ核心概念
这里mark一下 发送者开启 confirm 确认机制 spring.rabbitmq.publisher-confirm-type=correlated 发送者开启 return 确认机制 spri ...
- java B2B2C Springcloud电子商务平台源码-RabbitMQ基础概念...
RabbitMQ是一个由erlang开发的AMQP的开源实现. 需要JAVA Spring Cloud大型企业分布式微服务云构建的B2B2C电子商务平台源码 一零三八七七四六二六 AMQP,即Adva ...
最新文章
- 手把手带你用Python完成一个数据分析项目,能写进简历那种!(另送15个实战案例)...
- 数据结构——逆波兰式
- find的用法_【同步练习】高一英语下册find+复合宾语用法
- [转载] python string 字符串转换为字典 dict
- 腾讯IM : 如何替换String 表情库
- android 拦截qq消息,[Android] QNotified_v0.7.1-beta_QQ辅助增强XP模块【可屏蔽下拉小程序/屏蔽@全体/消息防撤回】...
- git 常见用法及遇到的问题
- 大学计算机基础与计算思维习题,大学计算机基础与计算思维客观题及答案.doc...
- iOS——UINavigationController简单实用以及内存警告处理过程
- 蓝牙sbc怎么解决_简单一文,为你详细解析手机蓝牙的音质之谜
- 我与计算机1000字大学,计算机系大学生助学金申请书(1000字)
- OpenCV函数subtract()使用心得及需要注意的地方
- 微信公众号html在线编辑器,【微信公众平台工具开发】雷人微信网页编辑器
- Java8新特性之Stream流式编程
- Oracle EBS 模拟登陆
- 自己实现call|bind|apply三兄dei
- 51Nod_1925 进制转换【进制+枚举】
- #小程序# 如何解决video视频在ios里出现黑屏?
- Python版名片管理系统源代码
- STC11L08XE_study01
热门文章
- hdu2489 Minimal Ratio Tree
- Windows server 2008 r2 开启Aero
- Example3_3(if-else语句)
- 【JVM性能调优】使用jstack找出最耗CPU的java线程
- java跳出指定循环
- Linux - 修改Cent OS系统的的hostname、配置DNS映射
- 一部手机可以对多个开发者账号开启双重认证吗?
- 《程序员代码面试指南》第二章 链表问题 搜索二叉树转换为双向链表
- vue从入门到进阶:自定义指令directive,插件的封装以及混合mixins(七)
- [20161006]windows下bbed使用注意.txt