RabbitMQ (基础知识)

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/


原文地址:https://www.cnblogs.com/du-z/p/11254173.html