AMQP简介

AMQP(Advanced Message Queue )即:高级消息队列协议;,是应用层协议的一个开放标准,为面向消息的中间件设计;高级消息队列协议使得遵从该规范的客户端应用和消息中间件服务器的全功能互操作成为可能。

RabbitMQ简介

  1. RabbitMQ是一个用Erlang编写的针对AMQP的开源项目,属于一个流行的开源消息队列系统
  2. RabbitMQ 支持持久化
  3. RabbitMQ 支持高可用

RabbitMQ的官网:http://www.rabbitmq.com

基础概念

Broker:简单来说就是消息队列服务器实体。

Exchange:消息交换机,他指定消息按什么规则,路由到那个队列

Queue:消息队列载体,每个消息都会被投入到一个或多个队列

Binding:绑定,就是把exchange和queue连接在一起,

vhost:虚拟主机,一个broker里可以开设多个vlhost,用作不同的权限分离

producer:消息生产者,就是投递消息的程序

consumer:消息的消费者,就是接受消息的程序

channel:消息通道,在客户端的每个连接里,可以建立多个channel,每个channel代表一个会话任务

RabbitMQ工作流程

  1. producer 客户端 产生message
  2. producer客户端 连接到服务器broker,创建一个channel
  3. producer客户端 声明一个exchange,并设置相关属性(如:Routing key等)
  4. bingding 将Exchange和Queue的绑定并同时指定一个Binding Key
  5. exchnge 根据Routing key,binding key,Exchange Type 为message 选定 Queue
  6. consumer客户端监听并 收到message

Exchange Type规则表

类型名称 类型描述
Direct Exchange Point-to-Point 消息模式,消息点对点的通信模式,
Direct Exchange 根据 Routing Key 进行精确匹配,
只有对应的 Message Queue 会接受到消息
Topic Exchange Publish-Subscribe(Pub-sub)消息模式,
Topic Exchange 根据 Routing Key 进行模式匹配,
只要符合模式匹配的 Message Queue 都会收到消息
Fanout Exchange 广播消息模式,
Fanout Exchange 将消息转发到所有绑定的 Message Queue
headers Exchange 不依赖于routing key与binding key的匹配规则来路由消息,
而是根据发送的消息内容中的headers属性进行匹配。

参考文章:https://www.cnblogs.com/cloudhere/p/10673654.html

推荐文章:

https://www.ibm.com/developerworks/cn/cloud/library/1403_renmm_opestackrpc/


最新文章

  1. javascript--Math相关
  2. MIT JOS学习笔记02:kernel 01(2016.10.28)
  3. MAC OS 系统使用心得
  4. Http请求之--C#的HttpWebRequest实现POST方式请求
  5. uname
  6. Plan04.学习与提升
  7. (剑指Offer)面试题16:反转链表
  8. xy
  9. javascript弹窗基础篇
  10. jQuery获取鼠标移动方向2
  11. 7-05. 魔法优惠券(25) (数学 ZJU_PAT)
  12. 强化一下开源库:Synopse
  13. NET工厂模式架构
  14. 找最大重复次数的数和重复次数(C++ Pair)
  15. 1627: [Usaco2007 Dec]穿越泥地
  16. ASP.NET没有魔法——ASP.NET MVC 与数据库之EntityFramework配置与连接字符串
  17. BZOJ4267 : 小强的颜色
  18. .Net core使用EF Core Migration做数据库升级
  19. mongodb复制集Replica Set使用简介
  20. POJ 2575

热门文章

  1. 对象的克隆(clone方法)
  2. windows server 2012 R2里IIS配置.net core2.1遇到的坑
  3. Windows server 安装远程桌面及破解120天时间限制授权
  4. 手撕redis分布式锁,隔壁张小帅都看懂了!
  5. MySQL中Exists和In的使用
  6. JMeter如何设置语言为中文
  7. 【渲染教程】使用3ds Max和ZBrush制作卡通风格的武器模型(上)
  8. 【C++】《C++ Primer 》第十九章
  9. centos 6.5 下安装RabbitMQ-3.7.28 二进制版本
  10. 全网最全!彻底弄透Java处理GMT/UTC日期时间