qq78707 发表于 2017-7-2 16:42:57

RabbitMQ 整理

  1、 简介
  AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。
AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。
RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。
  1.2、 整体架构

  Virtual Host(虚拟主机):类似权限控制组,一个Virtual Host里面可以有若干个Exchange/Queue。
  Exchange(交换器类似交换机)是按照什么逻辑将消息路由到Queue
  Queue(队列)是RabbitMQ的内部对象,用于存储消息
  1.3、运行原理
  AMQP 里主要要说两个组件:Exchange 和 Queue ,如下图所示,绿色的 X 就是 Exchange ,红色的是 Queue ,这两者都在 Server 端,又称作 Broker ,这部分是 RabbitMQ 实现的,而蓝色的则是客户端,通常有 Producer 和 Consumer 两种类型:
  rabbitMQ是一个在AMQP基础上完整的,可服用的企业消息系统。 rabbitmq是一个消费的代理;通过生产者客户端生产一个信息,转送给消费者客户端;在这个传输过程中,根据你的需要可以经过路由、缓冲、持久化来得到这个消息。

  Exchange有三种工作模式direct、Fanout和Topic,不同类型的Exchange路由行为不一样:
  Direct Exchange - 直接交互式处理路由键。需要将一个队列绑定到交换机上,要求该消息与一个特定的路由键完全匹配。如果一个队列绑定到该交换机上要求路由键“dog",则只有被标记为”dog"的消息才被转发,不会转发dog.puppy,也不会转发dog.guard,只会转发dog.

  Fanout Exchange - 广播式路由键。只需简单的将队列绑定到交换机上。一个发送到交换机的消息都会被转发到与该交换机绑定的所有队列上。很像子网广播,每台子网内的主机都获得了一份复制的消息。转发消息是就最快的

  Topic Exchange - 主题式交换器,通过消息的路由关键字和绑定关键的模式匹配,将消息路由到被绑定的队列中。这种路由顺类型可以被用来支持经典的发布/订阅消息传输模型--使用主题名字空间作为消息寻址模式,将消息传递给那些部分或者信贷部匹配主题模式的多个消费者。主题交换器类型工作方式如下:绑定关键字用零个或多个标记构成,每一个标记之间用 "." 字符分隔。绑定关键字 "*.stock.#" 匹配路由关键字 ”usd.stock"和"eur.stock.db",但是不匹配"stock.nasdaq“

  ---恢复内容结束---
页: [1]
查看完整版本: RabbitMQ 整理