一、概述
RabbitMQ是一个消息代理 - 一个消息系统的媒介。它可以为你的应用提供一个通用的消息发送和接收平台,并且保证消息在传输过程中的安全。
RabbitMQ消息模型的核心理念是:发布者(producer)不会直接发送任何消息给队列。事实上,发布者(producer)甚至不知道消息是否已经被投递到队列。
二、核心组件
- 1、Producing(生产者)
- 2、Exchange(交换机)
- 3、Routing(路由器)
- 4、Queue(队列)
- 5、Consuming(消费者)
三、组件详情
- 1、Producing(生产者)
- 生产(Producing)的意思就是发送。发送消息的程序就是一个生产者(producer)。
- 2、Exchange(交换机)
- 交换机非常简单,它一边从发布者方接收消息,一边把消息推送到队列。交换机必须知道如何处理它接收到的消息,是应该推送到指定的队列还是是多个队列,或者是直接忽略消息。这些规则是通过交换机类型(exchange type)来定义的。
- 3、Routing(路由器)
- routing_key 是exchange和queue绑定(binding)时的一个额外参数,目的是防止避免于basic_publish的参数混淆
- 4、Queue(队列)
- 实质上队列(queue)就是个巨大的消息缓冲区,它的大小只受主机内存和硬盘限制。多个生产者(producers)可以把消息发送给同一个队列,同样,多个消费者(consumers)也能够从同一个队列(queue)中获取数据。
- 5、Consuming(消费者)
- 消费(Consuming)和接收(receiving)是同一个意思。一个消费者(consumer)就是一个等待获取消息的程序。
四、Exchange类型
交换机在rabbitmq中有多种类型,对应类型所擅长的领域也不一样
1、直连交换机(Direct exchange)

- 直连交换机在链接队列的基础上,会再加上一个routing_key,生产者在发送消息的时候,必须带上一个routing_key,交换机在分发消息的时候,会根据routing_key 来匹配指定的队列
2、扇型交换机(fanout exchange)

- 扇形交换机是追基本的交换机类型,他能做的事情也比较简单,把接受的消息,发送给所有与它绑定的队列,多使用与广播。多人游戏资源更新广播。因为它不用做匹配扥该操作,速度是最快的
3、主题交换机(Topic exchange)

-
在实际应用中,如果要把一条消息发送到指定的队列,使用直连交换机也可以完成,但是随着业务增加,对应的队列也会增加,维护起来就很麻烦
-
这时候就需要用到主题交换机了,这也是应用最广的一个交换机。它要求通过消息通过特定的规则,交换机通过这些规则来映射到指定的队列上
-
在定义主题交换机的exchange和routing_key,会遵守通用的一些的规则:
(1)它的路由键通常有.
分隔开的单词,可以是任意单词,最好是能描述消息的单词
(2)*
用来表示一个单词
(3)#
用来表示任意单词 -
示例:
上图的例子已经很好的说明了他们之间的绑定关系,在举一个key更长的例子
(1)创建三个绑定,Q1的绑定键:*.white.*
, Q2的绑定键:*.*.rabbit
,Q3的绑定键:fast.#
(2)这三个绑定可以总结为:
* Q1对所有白色动物感兴趣
* Q2只对兔子感兴趣
* Q3对所有跑的贼快的动物感兴趣
(3)一个携带有fast.white.rabbit
的信息会发送到三个队列中、一个携带有lazy.white.rabbit
的消息,因为不满足Q3的条件,不会发送到Q3队列、一携带有lazy.orange.tiger
的消息,因为不满足任何一个队列的规则,消息不会被发到任何一个队列,并且会把这条数据丢掉。
(4)当一个队列的绑定键为#
时,这个队列无视消息的路由,接受所有的消息
(5)当*
和#
都未出现在绑定键中的时候,此时的主题交换机和直连交换机是样的解析行为
网友评论