首先对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基本概念简介相关推荐

  1. RabbitMQ 基本概念与高级特性

    文章目录 1. 什么是消息队列 1.1 消息队列概述 1.2 使用消息队列的优势 1.3 使用消息队列的劣势 1.4 常见的消息队列产品对比 2. RabbitMQ 基本概念 2.1 RabbitMQ ...

  2. SpringBoot高级教程

    SpringBoot的高级教程 一.SpringBoot缓存 缓存的场景 临时性数据存储[校验码] 避免频繁因为相同的内容查询数据库[查询的信息] 1.JSR107缓存规范 用的比较少 Java Ca ...

  3. springboot高级篇及springboot1.5转springboot2.17所遇到的坑

    SpringBoot的高级教程 一.SpringBoot缓存 缓存的场景 临时性数据存储[校验码] 避免频繁因为相同的内容查询数据库[查询的信息] 1.JSR107缓存规范 用的比较少 Java Ca ...

  4. SpringBoot高级教程(转)

    SpringBoot的高级教程 注:此文章转载于GitHub,但是原文章图片加载出错,因此我整理了一下,并非本人原创,在此感谢原作者! 附上原文视频课地址供大家学习: www.bilibili.com ...

  5. SpringBoot高级

    九.SpringBoot缓存 缓存的场景 临时性数据存储[校验码] 避免频繁因为相同的内容查询数据库[查询的信息] 1.JSR107缓存规范 用的比较少 Java Caching定义了5个核心接口 C ...

  6. 项目背景介绍及文件系统基本概念简介

    文章目录 1 项目背景介绍 2 文件系统基本概念简介 2.1 文件系统接口 2.2 存储的基本单位 2.3 文件存储单位 2.4 文件结构 3 海量存储选用大文件结构的原因 1 项目背景介绍 根据淘宝 ...

  7. springboot高级——消息队列相关

    写在前边:本文学习尚硅谷的springboot高级整理笔记. 消息队列是什么,有什么好处? 我们可以把消息队列比作是一个存放消息的容器,当我们需要使用消息的时候可以取出消息供自己使用.消息队列是分布式 ...

  8. 入门RabbitMQ核心概念

    这里mark一下 发送者开启 confirm 确认机制 spring.rabbitmq.publisher-confirm-type=correlated 发送者开启 return 确认机制 spri ...

  9. java B2B2C Springcloud电子商务平台源码-RabbitMQ基础概念...

    RabbitMQ是一个由erlang开发的AMQP的开源实现. 需要JAVA Spring Cloud大型企业分布式微服务云构建的B2B2C电子商务平台源码 一零三八七七四六二六 AMQP,即Adva ...

最新文章

  1. 手把手带你用Python完成一个数据分析项目,能写进简历那种!(另送15个实战案例)...
  2. 数据结构——逆波兰式
  3. find的用法_【同步练习】高一英语下册find+复合宾语用法
  4. [转载] python string 字符串转换为字典 dict
  5. 腾讯IM : 如何替换String 表情库
  6. android 拦截qq消息,[Android] QNotified_v0.7.1-beta_QQ辅助增强XP模块【可屏蔽下拉小程序/屏蔽@全体/消息防撤回】...
  7. git 常见用法及遇到的问题
  8. 大学计算机基础与计算思维习题,大学计算机基础与计算思维客观题及答案.doc...
  9. iOS——UINavigationController简单实用以及内存警告处理过程
  10. 蓝牙sbc怎么解决_简单一文,为你详细解析手机蓝牙的音质之谜
  11. 我与计算机1000字大学,计算机系大学生助学金申请书(1000字)
  12. OpenCV函数subtract()使用心得及需要注意的地方
  13. 微信公众号html在线编辑器,【微信公众平台工具开发】雷人微信网页编辑器
  14. Java8新特性之Stream流式编程
  15. Oracle EBS 模拟登陆
  16. 自己实现call|bind|apply三兄dei
  17. 51Nod_1925 进制转换【进制+枚举】
  18. #小程序# 如何解决video视频在ios里出现黑屏?
  19. Python版名片管理系统源代码
  20. STC11L08XE_study01

热门文章

  1. hdu2489 Minimal Ratio Tree
  2. Windows server 2008 r2 开启Aero
  3. Example3_3(if-else语句)
  4. 【JVM性能调优】使用jstack找出最耗CPU的java线程
  5. java跳出指定循环
  6. Linux - 修改Cent OS系统的的hostname、配置DNS映射
  7. 一部手机可以对多个开发者账号开启双重认证吗?
  8. 《程序员代码面试指南》第二章 链表问题 搜索二叉树转换为双向链表
  9. vue从入门到进阶:自定义指令directive,插件的封装以及混合mixins(七)
  10. [20161006]windows下bbed使用注意.txt