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. beyond compare 4.2.9桌面右键集成的问题修复

    beyond compare 4.2.9桌面右键集成的问题修复 安装后,发现在WIN64时,注册表中注册的DLL库有问题 出错处: [HKEY_CLASSES_ROOT\CLSID\{57FA2D12 ...

  2. android window(三)lWindow添加流程

    http://androidxref.com/6.0.1_r10/xref/frameworks/base/services/core/java/com/android/server/wm/Windo ...

  3. log记录日志使用说明

    一. 想要让Log4net日志(以下称日志)按每月自动归类为一个文件夹,为此,学习和修改了log4net.config文件.查了资料,重点是以下这些参数: <param name="F ...

  4. Log4Net使用详解(续)

    转:http://blog.csdn.net/zhoufoxcn/article/details/6029021 说明自从上次在2008年在博客上发表过有关log4net的用法介绍文章之后(网址:ht ...

  5. 前端 CSS的继承性

    css有两大特性:继承性和层叠性 继承性 继承:给父级设置一些属性,子级继承了父级的该属性,这就是我们的css中的继承. 记住:有一些属性是可以继承下来 : color . font-*. text- ...

  6. BZOJ 4987 (树形DP)

    ###题面 https://www.lydsy.com/JudgeOnline/problem.php?id=4987 ###分析 先考虑贪心,显然k个节点形成一棵树 求出树的直径,显然直径应该只被经 ...

  7. 移动端抓包工具——Fiddler(一)

     web端抓包一般利用浏览器自带的检查功能(F12),然后看Network项,根据请求响应判断出问题 移动端怎么抓包呢,这里介绍一款常用的抓包工具——Fiddler 前提: 1.必须确保安装fiddl ...

  8. selenium 定位方式

    在使用selenium webdriver进行元素定位时,通常使用findElement或findElements方法结合By类返回的元素句柄来定位元素.其中By类的常用定位方式共八种,现分别介绍如下 ...

  9. Git同步问题

    1. 无法合并不相关历史记录 git pull origin master --allow-unrelated-histories

  10. MiniUI学习笔记1-表单控件

    1.输入框样式 class="mini-textbox" //普通输入框 class="mini-password" //密码输入框 class="m ...