以前,笔者写过《 CentOS 7.2 安装 RabbitMQ》 这篇文章,今天整理一下 RabbitMQ 相关的笔记便于之后复习。spa
在 RabbitMQ 官网上提供了 6 中工做模式:简单模式、工做队列模式、发布/订阅模式、路由模式、主题模式 和 RPC 模式。对象
本篇只对前 5 种工做方式进行介绍。blog
之因此将这两种模式合并在一块儿介绍,是由于它们工做原理很是简单,由 3 个对象组成:生产者、队列、消费者。rabbitmq
生产者负责生产消息,将消息发送到队列中,消费者监听队列,队列有消息就进行消费。队列
当有多个消费者时,消费者平均消费队列中的消息。路由
这 3 种模式都使用到交换机。get
生产者不直接与队列交互,而是将消息发送到交换机中,再由交换机将消息放入到已绑定该交换机的队列中给消费者消费。it
经常使用的交换机类型有 3 种:fanout、direct、topic。原理
工做原理图以下:im
fanout:不处理路由键。只须要简单的将队列绑定到交换机上。一个发送到交换机的消息都会被转发到与该交换机绑定的全部队列上。很像子网广播,每台子网内的主机都得到了一份复制的消息。fanout 类型交换机转发消息是最快的。
其中,发布/订阅模式使用的是 fanout 类型的交换机。
direct:处理路由键。须要将一个队列绑定到交换机上,要求该消息与一个特定的路由键彻底匹配。若是一个队列绑定到该交换机上要求路由键 “dog”,则只有被标记为 “dog” 的消息才被转发,不会转发 dog.puppy,也不会转发 dog.guard,只会转发dog。
其中,路由模式使用的是 direct 类型的交换机。
topic:将路由键和某模式进行匹配。此时队列须要绑定要一个模式上。符号 “#” 匹配一个或多个词,符号“”匹配很少很多一个词。所以“audit.#” 可以匹配到“audit.irs.corporate”,可是“audit.” 只会匹配到 “audit.irs”。
其中,主题模式使用的是 topic 类型的交换机。