RabbitMQ是什么?

  RabbitMQ是一个开源的消息代理和队列服务器,用来通过普通协议,在完全不同的应用之间共享数据,RabbirMQ是使用Erlang语言来编写的,并且RabbitMQ是基于AMQP协议的。

为什么使用RabbitMQ?

  开源、性能优秀、稳定性保障

  提供可靠的消息投递模式(comfirm)、返回模式(return)

  与SpringAMQP完美整合,API丰富

  集群模式丰富、表达式配置、HA模式(高可用模式)、镜像队列模式

  保证数据不丢失的前提下做到高可靠性,可用性

  解耦

Rabbit高性能的原因?

  RabbitMQ使用Erlang语言,Erlang语言最初在于交换机领域的架构模式,这样使得RabbirMQ在Broker之间进行数据交互的性能非常挺优秀。

  Erlang优点:Erlang有着和原生Socket一样的延迟。(延迟和响应一样重要)

什么是AMQP高级消息队列协议?

  AMQP全称:Advanced Message Queuing Protocol

  AMQP翻译:高级消息队列协议

  AMQP定义:是具有现代特征的二进制协议,是一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。

  AMQP协议模型:生产者应用服务端-------》将消息扔到server端(rabbitmq的节点)上,Virtual host虚拟主机,其实就是一个上层路由逻辑的概念,Exchange也就是更上一级的AMQP协议的核心。

          生产者将消息投递到Server的Exchange交换机上。(消息投递要经过服务连接用户名,密码,ip地址,在经过虚拟主机Virtual host,最后投递到具体的Exchange)。

          消费者应用服务端-------》监听Message Queue(消息队列)。

          Exchange和Message Queue又有一个绑定关系。

AMQP核心概念是什么?

  Server:又称Broker,接受客户端的连接,实现AMQP实体服务

  Connection:连接,应用程序与Broker的网络连接

  Channel:网络通信,几乎所有的操作都在Channel中进行,Channel是进行消息读写的通道,

       (消息流转,清空消息,添加用户等)

       客户端可建立多个Channel,每个Channel代表一个会话任务(拿到连接,创建channel)

  Message:消息,服务器和应用程序之间传送的数据,由Properties和Body组成。

       Properties可以对消息进行修饰,比如消息的优先级、延迟投递等高级特性,Body则是消息体内容

  Virtual host:虚拟主机,用于进行逻辑隔离,最上层的消息路由。

        一个Virtual Host里面可以有若干个Exchange和Queue,

        同一个Virtual host里面不能有相同名称的Exchange或者Queue  

  Exchange:交换机,接收消息,根据路由键(routing key)转发消息到绑定的队列上

  Binding:绑定,Exchange和Queue之间的虚拟连接,binding中可以包含routing key

  Routing key:一个路由规则,虚拟机可用它来确定如何路由一个特定消息

  Queue:也成为Message Queue,消息队列,保存消息并将他们转发给消费者

RabbitMQ的整体架构是什么?

  左P:生产者

  右P:消费者

  中间:Server端

  绿X:交换机

  红:队列

  

  生产者将消息投递到交换机上,一个交换机可以绑定多个消息队列,交换机有一个路由策略,(指定两个属性,1、消息发送哪个exchange,

  2、消息带上路由key,exchange和队列绑定关系,通过路由key将消息路由到指定队列上,发送给消费者。)

  

    

  

RabbitMQ核心概念和AMQP协议(二)的更多相关文章

  1. 消息中间件——RabbitMQ(三)理解RabbitMQ核心概念和AMQP协议!

    前言 本章学习,我们可以了解到以下知识点: 互联网大厂为什么选择RabbitMQ? RabbiMQ的高性能之道是如何做到的? 什么是AMQP高级协议? AMQP核心概念是什么? RabbitMQ整体架 ...

  2. RabbitMQ如何工作和RabbitMQ核心概念

    RabbitMQ是一个开源的消息代理软件.它接受来自生产者的消息并将其传递给消费者.它就像一个中间人,可以用来减少Web应用程序服务器的负载和交付时间. RabbitMQ如何工作 让我们简要介绍一下R ...

  3. RabbitMQ MQTT协议和AMQP协议

    RabbitMQ MQTT协议和AMQP协议 1        序言... 1 1.1     RabbitMq结构... 1 1.2     RabbitMq消息接收... 4 1.3     Ex ...

  4. RabbitMQ核心概念篇

    RabbitMQ介绍 一.RabbitMQ使用场景 RabbitMQ他是一个消息中间件,说道消息中间件[最主要的作用:信息的缓冲区]还是的从应用场景来看下: 1.系统集成与分布式系统的设计 各种子系统 ...

  5. RabbitMq核心概念和术语

    简介 越来越多的消息中间件很容易让人产生混淆,在学习一种消息中间件的时候,最好先了解他的几种抽象概念,方便你理解,明白了这些概念,你学习起来的时候也就得心应手,同时也是使用好RabbitMQ的基础. ...

  6. rabbitMQ的简单实例——amqp协议带数据回写机制

    rabbitMQ是一种高性能的消息队列,支持或者说它实现了AMQP协议(advanced message queue protocol高级消息队列协议). 下面简单讲一讲一个小例子.我们首先要部署好r ...

  7. RabbitMQ 核心概念

    目录 RabbitMQ 特点 AMQP 协议 RabbitMQ 消息传递机制 Message Exchange 1. 简介 2. 类型 3. 属性 RabbitMQ 特点 RabbitMQ 相较于其他 ...

  8. RabbitMQ核心概念

    AMQP的四个主要概念 1.虚拟主机(virtual host)或(vhost) 2.交换机(exchange) 3.队列(queue) 4.绑定器(bind) 什么是虚拟主机? 一组交换机.队列和绑 ...

  9. Maven 专题(六):Maven核心概念详解(二)

    5 仓库 5.1 分类 [1]本地仓库:为当前本机电脑上的所有 Maven 工程服务.[2]远程仓库:        (1)私服:架设在当前局域网环境下,为当前局域网范围内的所有 Maven 工程服务 ...

随机推荐

  1. SpringBoot整合Lintener

    1.通过扫描完成Lintener组件的注册 1.1编写Listener /** * springboot整合Lintener 方式一 * 在web.xml中如何配置Listener * <lis ...

  2. Centos7上安装Nginx两种方法

    源码编译安装 http://nginx.org/en/download.html 到官网下载,然后用XFTP上传到root目录 把文件解压出来 tar -zxvf nginx-1.16.0.tar.g ...

  3. Websocket如何建立连接

    前面提到,WebSocket复用了HTTP的握手通道.具体指的是,客户端通过HTTP请求与WebSocket服务端协商升级协议.协议升级完成后,后续的数据交换则遵照WebSocket的协议. 1.客户 ...

  4. CentOS 7 关闭启动防火墙

    关闭firewall:systemctl stop firewalld.service #停止firewallsystemctl disable firewalld.service #禁止firewa ...

  5. idea 社区版本创建javaweb项目 使用jetty

    idea社区版本 创建javaweb项目后使用jetty启动 <dependencies> <dependency> <groupId>javax.servlet& ...

  6. 使用TreeSet对象去重排序

    java对象除了采用equals和hashCode判断对象是否相等外,开发人员也可以通过其他属性判断两个对象是否相等 以下案例采用TreeSet去掉重复对象 Teacher: public class ...

  7. 自动生成脚本头部格式并调用VIM工具

    在我们写脚本的时候,开始总要按照脚本书写规范来定义脚本头部格式,久而久之是不是会觉得麻烦效率低下呢,这里就介绍一个好的思路给大家. 1 首先我们在VIM里先复制个头部格式的内容,这里就抄袭一个二师兄的 ...

  8. java_第一年_JavaWeb(10)

    JavaWeb的两种开发模式 JSP+JavaBean框架:JavaBean负责封装数据.提供方法,JSP负责处理用户请求和显示数据:只能开发较为简单的业务: JSP+JavaBean+Servlet ...

  9. BZOJ 1767] [Ceoi2009] harbingers (斜率优化)

    [BZOJ 1767] [Ceoi2009] harbingers (斜率优化) 题面 给定一颗树,树中每个结点有一个邮递员,每个邮递员要沿着唯一的路径走向capital(1号结点),每到一个城市他可 ...

  10. Python内建函数enumerate()用法及在for循环应用

    Python 内建函数enumerate() 由于这个单纯很长,不容易记住,用法还是比较广泛的,下面讲述Python内建函数enumerate()用法. 1,实例 enumerate(sequence ...