RabbitMQ核心概念和AMQP协议(二)
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协议(二)的更多相关文章
- 消息中间件——RabbitMQ(三)理解RabbitMQ核心概念和AMQP协议!
前言 本章学习,我们可以了解到以下知识点: 互联网大厂为什么选择RabbitMQ? RabbiMQ的高性能之道是如何做到的? 什么是AMQP高级协议? AMQP核心概念是什么? RabbitMQ整体架 ...
- RabbitMQ如何工作和RabbitMQ核心概念
RabbitMQ是一个开源的消息代理软件.它接受来自生产者的消息并将其传递给消费者.它就像一个中间人,可以用来减少Web应用程序服务器的负载和交付时间. RabbitMQ如何工作 让我们简要介绍一下R ...
- RabbitMQ MQTT协议和AMQP协议
RabbitMQ MQTT协议和AMQP协议 1 序言... 1 1.1 RabbitMq结构... 1 1.2 RabbitMq消息接收... 4 1.3 Ex ...
- RabbitMQ核心概念篇
RabbitMQ介绍 一.RabbitMQ使用场景 RabbitMQ他是一个消息中间件,说道消息中间件[最主要的作用:信息的缓冲区]还是的从应用场景来看下: 1.系统集成与分布式系统的设计 各种子系统 ...
- RabbitMq核心概念和术语
简介 越来越多的消息中间件很容易让人产生混淆,在学习一种消息中间件的时候,最好先了解他的几种抽象概念,方便你理解,明白了这些概念,你学习起来的时候也就得心应手,同时也是使用好RabbitMQ的基础. ...
- rabbitMQ的简单实例——amqp协议带数据回写机制
rabbitMQ是一种高性能的消息队列,支持或者说它实现了AMQP协议(advanced message queue protocol高级消息队列协议). 下面简单讲一讲一个小例子.我们首先要部署好r ...
- RabbitMQ 核心概念
目录 RabbitMQ 特点 AMQP 协议 RabbitMQ 消息传递机制 Message Exchange 1. 简介 2. 类型 3. 属性 RabbitMQ 特点 RabbitMQ 相较于其他 ...
- RabbitMQ核心概念
AMQP的四个主要概念 1.虚拟主机(virtual host)或(vhost) 2.交换机(exchange) 3.队列(queue) 4.绑定器(bind) 什么是虚拟主机? 一组交换机.队列和绑 ...
- Maven 专题(六):Maven核心概念详解(二)
5 仓库 5.1 分类 [1]本地仓库:为当前本机电脑上的所有 Maven 工程服务.[2]远程仓库: (1)私服:架设在当前局域网环境下,为当前局域网范围内的所有 Maven 工程服务 ...
随机推荐
- Dnsmasq 安装配置
Dnsmasq 官网 http://www.thekelleys.org.uk/dnsmasq/doc.html Unbuntu 安装 Dnsmasq 参见https://help.ubuntu.c ...
- 安全运维 - Linux系统维护
命令相关 帮助信息命令:help.whatis.info.which.whereis.man 目录管理: cd.ls.mkdir.rm.chmod.mv 用户管理: groupadd.groupdel ...
- PyTorch笔记之 squeeze() 和 unsqueeze()
1.squeeze() 函数 squeeze() 用来去掉向量的一个维度,只有维度为 1 的那一维才能去掉 example: 初始化1个向量shape为(1,2,3)的向量 import torch ...
- JavaSE编码试题强化练习5
1.不使用函数实现字符串的翻转 /** * 1.不使用函数实现字符串的翻转 */ public class TestStringReverse { public static void main(St ...
- [Python3 填坑] 007 多才多艺的 len()
目录 1. print( 坑的信息 ) 2. 开始填坑 (1) 总的来说 (2) 举例说明 (3) 后记 1. print( 坑的信息 ) 挖坑时间:2019/01/10 明细 坑的编码 内容 Py0 ...
- [Bzoj3262]陌上花开(CDQ分治&&树状数组||树套树)
题目链接 题目就是赤裸裸的三维偏序,所以用CDQ+树状数组可以比较轻松的解决,但是还是树套树好想QAQ CDQ+树状数组 #include<bits/stdc++.h> using nam ...
- 2019牛客暑期多校训练营(第三场) - J - LRU management - 模拟
https://ac.nowcoder.com/acm/contest/883/J 根据这个数据结构的特点,也就是计算机组成原理里面学过的cache的LRU管理算法,每次访问都会在cache中查询一页 ...
- vscode加MinGw三步搭建c/c++调试环境
vscode加MinGw三步搭建c/c++调试环境 step1:安装vscode.MinGw 1.1 vscod常规安装:https://code.visualstudio.com/ 1.2 MinG ...
- node中使用log4js4.x版本记录
const log4js = require('log4js'); log4js.configure({ appenders: { logFile: { //文件形式打印日志 type: " ...
- 未能加载文件或程序集“WebApi”或它的某一个依赖项。试图加载格式不正确的程序。
将项目的平台目标改为“Any CPU” 在项目上右击选择属性——>生成——>平台目标 选择Any CPU