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协议相关推荐

  1. 2-RabbitMQ核心概念及AMQP协议

    RabbitMQ核心概念及AMQP协议 [root@Centos ~]# rabbitmq-plugins list Configured: E = explicitly enabled; e = i ...

  2. RabbitMQ核心概念和AMQP协议(二)

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

  3. 转 RabbitMQ 基础概念及 Spring 的配置和使用 推荐好文 举例讲解

    从不知道到了解-RabbitMQ 基础概念及 Spring 的配置和使用 转: sumile.cn  »  从不知道到了解-RabbitMQ 基础概念及 Spring 的配置和使用 序言 你在系统中是 ...

  4. JUST技术:分布式一致性协议概念及Raft协议简介

    分布式系统通常由异步网络连接的多个节点构成,每个节点的计算和存储相互独立.分布式一致性指多个节点对某一变量的取值达成一致,一旦达成一致,则变量的本次取值被确定.本文将简单介绍一致性的一些基本概念,以及 ...

  5. RabbitMQ MQTT协议和AMQP协议

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

  6. RabbitMQ学习笔记和AMQP协议浅析

    目录 RabbitMQ MQ的相关概念 消息队列协议 消息持久化 消息的分发策略 docker安装RabbitMQ AMQP协议 RabbitMQ的几种模式 简单simple模式 发布/订阅fanou ...

  7. RabbitMq详解之AMQP协议

    AMQP(高级消息队列协议)是一个网络协议.它支持符合要求的客户端应用(application)和消息中间件代理(messaging middleware broker)之间进行通信.通过了解Rabb ...

  8. Rust P2P网络应用实战-1 P2P网络核心概念及Ping程序

    本系列文章首先研究P2P网络的核心概念,然后详细分析libp2p-rust库中的应用实例,为以后开发P2P网络应用程序打好基础. P2P网络 P2P(Peer-to-Peer)是一种网络技术,可以在网 ...

  9. Maven核心概念及Eclipse使用Maven

    Eclipse使用Maven 1).添加Maven 2).修改本地库 3).建立Maven项目 4).文件结构 5).关于web项目报错的解决 新建立的文件无web结构: 修改: 结果: Ps:此时还 ...

最新文章

  1. python 线性回归_用Python实现线性回归算法
  2. HDU - 2049 不容易系列之(4)——考新郎(错排问题+组合数学)
  3. P6085-[JSOI2013]吃货JYY【状压dp,欧拉回路】
  4. python 绘制二维曲面_用python绘制曲面[复制]
  5. 主库创建存储过程时从库显示 Error 1049
  6. 实现类的构造函数,析构函数和赋值函数
  7. 机器学习1.2 ---参数学习
  8. jsp网站使用ffmpeg实现为.flv格式视频截图
  9. 《Java Web 程序设计与开发》读书笔记——JSP编程基础和JSP内置对象
  10. AC A2C A3C
  11. 内置函数--inline
  12. ES6--Reflect
  13. 运营Tumblr的几个建议-教你成为tumblr达人
  14. 撤回的微信消息腾讯服务器有记录吗,教你如何查看对方已经撤回的微信消息
  15. Flutter 路由原理解析
  16. 这里有一份CAD 快捷键指南,请查收~
  17. 用户名+密码控制+php文件存储
  18. Editplus文件在linux下乱码,EditPlus中文乱码怎么办-解决EditPlus中文出现乱码的方法 - 河东软件园...
  19. 【获奖公布】 我的2016 主题征文活动
  20. 微信小程序地图(二) 跑步路线展示

热门文章

  1. 短信发送显示服务器失败,手机短信发不出去怎么办 手机故障解决方法【方法步骤】...
  2. apple登录服务端验证
  3. OSI七层模型——数据链路层
  4. 【VMware】【XShell】从虚拟机下载文件到本地
  5. HTML基础-02-文本格式化、引文(斜体、粗体、上/下标签、删除、插入、强调、加重、字号、预格式,缩写、文字方向、短引用、长引用、引证)
  6. eval函数和repr函数
  7. 向量索引算法HNSW和NSG的比较
  8. 怎么去除视频字幕清理视频字幕或水印的四种方法
  9. python获取字典第一个元素,从字典中获取第一个元素
  10. python就业前景不好_Python就业发展前景分析