RabbitMQ-核心概念及AMQP协议
1、应用场景
大多应用中,可通过消息服务中间件来提升系统异步通信、扩展解耦能力。
1)、异步处理
如当用户提交注册信息后,要发送邮件或短信来通知用户,传统的处理方式
用户提交后将信息写入消息队列后立马返回结果,邮件/短信服务异步读取消息队列信息再发送
2)、应用解耦
如订单系统下单的信息要在库存系统中进行计算,传统的处理方式
通过消息队列传输数据进行应用解耦,订单和库存作为2个微服务,订单系统下单将数据写入消息队列,库存系统通过订阅消息,当队列中有消息时库存系统就会进行计算。
3)、流量削峰
如10万个用户同时请求,同时请求可能导致服务挂掉,可以设置消息队列为1万,请求过来1万放入队列然后读取处理,另外9万请求返回失败信息,下次再次请求。
2、RabbitMQ简介及重要概念
RabbitMQ是由Erlang语言编写的实现了高级消息队列协议(AMQP)的开源消息代理软件(也可称为 面向消息的中间件)。支持Windows、Linux/Unix、MAC OS X操作系统和包括JAVA在内的多种编程语言。
RabbitMQ重要概念
Broker:简单来说就是消息队列服务器实体。
Exchange:消息交换机,它指定消息按什么规则,路由到哪个队列。
Queue:消息队列载体,每个消息都会被投入到一个或多个队列。
Binding:绑定,它的作用就是把exchange和queue按照路由规则绑定起来。
Routing Key:路由关键字,exchange根据这个关键字进行消息投递。
vhost:虚拟主机,一个broker里可以开设多个vhost,用作不同用户的权限分离。
producer:消息生产者,就是投递消息的程序。
consumer:消息消费者,就是接受消息的程序。
channel:消息通道,在客户端的每个连接里,可建立多个channel,每个channel代表一个会话任务。
消息队列的使用过程大概如下:
(1)客户端连接到消息队列服务器,打开一个channel。
(2)客户端声明一个exchange,并设置相关属性。
(3)客户端声明一个queue,并设置相关属性。
(4)客户端使用routing key,在exchange和queue之间建立好绑定关系。
(5)客户端投递消息到exchange。
3、AMQP协议
AMQP,即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件同产品,不同的开发语言等条件的限制。
AMQ Model架构:
消息的流转过程:
RabbitMQ-核心概念及AMQP协议相关推荐
- 2-RabbitMQ核心概念及AMQP协议
RabbitMQ核心概念及AMQP协议 [root@Centos ~]# rabbitmq-plugins list Configured: E = explicitly enabled; e = i ...
- RabbitMQ核心概念和AMQP协议(二)
RabbitMQ是什么? RabbitMQ是一个开源的消息代理和队列服务器,用来通过普通协议,在完全不同的应用之间共享数据,RabbirMQ是使用Erlang语言来编写的,并且RabbitMQ是基于A ...
- 转 RabbitMQ 基础概念及 Spring 的配置和使用 推荐好文 举例讲解
从不知道到了解-RabbitMQ 基础概念及 Spring 的配置和使用 转: sumile.cn » 从不知道到了解-RabbitMQ 基础概念及 Spring 的配置和使用 序言 你在系统中是 ...
- JUST技术:分布式一致性协议概念及Raft协议简介
分布式系统通常由异步网络连接的多个节点构成,每个节点的计算和存储相互独立.分布式一致性指多个节点对某一变量的取值达成一致,一旦达成一致,则变量的本次取值被确定.本文将简单介绍一致性的一些基本概念,以及 ...
- RabbitMQ MQTT协议和AMQP协议
RabbitMQ MQTT协议和AMQP协议 1 序言... 1 1.1 RabbitMq结构... 1 1.2 RabbitMq消息接收... 4 1.3 Ex ...
- RabbitMQ学习笔记和AMQP协议浅析
目录 RabbitMQ MQ的相关概念 消息队列协议 消息持久化 消息的分发策略 docker安装RabbitMQ AMQP协议 RabbitMQ的几种模式 简单simple模式 发布/订阅fanou ...
- RabbitMq详解之AMQP协议
AMQP(高级消息队列协议)是一个网络协议.它支持符合要求的客户端应用(application)和消息中间件代理(messaging middleware broker)之间进行通信.通过了解Rabb ...
- Rust P2P网络应用实战-1 P2P网络核心概念及Ping程序
本系列文章首先研究P2P网络的核心概念,然后详细分析libp2p-rust库中的应用实例,为以后开发P2P网络应用程序打好基础. P2P网络 P2P(Peer-to-Peer)是一种网络技术,可以在网 ...
- Maven核心概念及Eclipse使用Maven
Eclipse使用Maven 1).添加Maven 2).修改本地库 3).建立Maven项目 4).文件结构 5).关于web项目报错的解决 新建立的文件无web结构: 修改: 结果: Ps:此时还 ...
最新文章
- python 线性回归_用Python实现线性回归算法
- HDU - 2049 不容易系列之(4)——考新郎(错排问题+组合数学)
- P6085-[JSOI2013]吃货JYY【状压dp,欧拉回路】
- python 绘制二维曲面_用python绘制曲面[复制]
- 主库创建存储过程时从库显示 Error 1049
- 实现类的构造函数,析构函数和赋值函数
- 机器学习1.2 ---参数学习
- jsp网站使用ffmpeg实现为.flv格式视频截图
- 《Java Web 程序设计与开发》读书笔记——JSP编程基础和JSP内置对象
- AC A2C A3C
- 内置函数--inline
- ES6--Reflect
- 运营Tumblr的几个建议-教你成为tumblr达人
- 撤回的微信消息腾讯服务器有记录吗,教你如何查看对方已经撤回的微信消息
- Flutter 路由原理解析
- 这里有一份CAD 快捷键指南,请查收~
- 用户名+密码控制+php文件存储
- Editplus文件在linux下乱码,EditPlus中文乱码怎么办-解决EditPlus中文出现乱码的方法 - 河东软件园...
- 【获奖公布】 我的2016 主题征文活动
- 微信小程序地图(二) 跑步路线展示
热门文章
- 短信发送显示服务器失败,手机短信发不出去怎么办 手机故障解决方法【方法步骤】...
- apple登录服务端验证
- OSI七层模型——数据链路层
- 【VMware】【XShell】从虚拟机下载文件到本地
- HTML基础-02-文本格式化、引文(斜体、粗体、上/下标签、删除、插入、强调、加重、字号、预格式,缩写、文字方向、短引用、长引用、引证)
- eval函数和repr函数
- 向量索引算法HNSW和NSG的比较
- 怎么去除视频字幕清理视频字幕或水印的四种方法
- python获取字典第一个元素,从字典中获取第一个元素
- python就业前景不好_Python就业发展前景分析