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. Dnsmasq 安装配置

    Dnsmasq  官网 http://www.thekelleys.org.uk/dnsmasq/doc.html Unbuntu 安装 Dnsmasq 参见https://help.ubuntu.c ...

  2. 安全运维 - Linux系统维护

    命令相关 帮助信息命令:help.whatis.info.which.whereis.man 目录管理: cd.ls.mkdir.rm.chmod.mv 用户管理: groupadd.groupdel ...

  3. PyTorch笔记之 squeeze() 和 unsqueeze()

    1.squeeze() 函数 squeeze() 用来去掉向量的一个维度,只有维度为 1 的那一维才能去掉 example: 初始化1个向量shape为(1,2,3)的向量 import torch ...

  4. JavaSE编码试题强化练习5

    1.不使用函数实现字符串的翻转 /** * 1.不使用函数实现字符串的翻转 */ public class TestStringReverse { public static void main(St ...

  5. [Python3 填坑] 007 多才多艺的 len()

    目录 1. print( 坑的信息 ) 2. 开始填坑 (1) 总的来说 (2) 举例说明 (3) 后记 1. print( 坑的信息 ) 挖坑时间:2019/01/10 明细 坑的编码 内容 Py0 ...

  6. [Bzoj3262]陌上花开(CDQ分治&&树状数组||树套树)

    题目链接 题目就是赤裸裸的三维偏序,所以用CDQ+树状数组可以比较轻松的解决,但是还是树套树好想QAQ CDQ+树状数组 #include<bits/stdc++.h> using nam ...

  7. 2019牛客暑期多校训练营(第三场) - J - LRU management - 模拟

    https://ac.nowcoder.com/acm/contest/883/J 根据这个数据结构的特点,也就是计算机组成原理里面学过的cache的LRU管理算法,每次访问都会在cache中查询一页 ...

  8. vscode加MinGw三步搭建c/c++调试环境

    vscode加MinGw三步搭建c/c++调试环境 step1:安装vscode.MinGw 1.1 vscod常规安装:https://code.visualstudio.com/ 1.2 MinG ...

  9. node中使用log4js4.x版本记录

    const log4js = require('log4js'); log4js.configure({ appenders: { logFile: { //文件形式打印日志 type: " ...

  10. 未能加载文件或程序集“WebApi”或它的某一个依赖项。试图加载格式不正确的程序。

    将项目的平台目标改为“Any CPU” 在项目上右击选择属性——>生成——>平台目标  选择Any CPU