赞
踩
上一篇文章说了RabbitMQ的基本概念以及应用场景RabbitMQ核心概念以及工作原理理解,那么这篇说一下RabbitMQ的核心Exchange(交换机)
Exchange是用于接收、分配消息的。
生产者先要指定一个“routing key”(路由键),然后将消息发送到交换机。这个“routing key”需要与"Exchange type"及“binging key”联合使用才能生效,然后,交换机将消息路由到一个或者多个Queue中,或丢失。
一开始看完这概念,真的是无数脸懵逼,死记硬背都记不住的那种,所有咱说点人话
还是以上一篇文章地产中介为例,卖房的要提供一个能识别的信息例如身份证(routing key),然后把需求告诉给中介,中介拿上你的带有身份信息的资料,在他们系统给你录入信息,并标记“这是个2亿的大客户”,这个标记就是(binging key),既然你是个大客户那么就要享受VIP待遇,所以由大区经理亲自接待,并享受舒适的服务,那么这个VIP待遇就是(Exchange type),然后一个渠道或者多个渠道发布信息(Queue)。
direct(直接)、topic(主题)、fanout(扇形)、headers(头)
流程:在绑定队列时会设定一个routing key,只有在消息的routing key与队列匹配时,消息才会被交换机投送到绑定的队列中。允许一个队列通过一个固定的routing key进行绑定。direct Exchange将消息根据其routing key属性投递到包含对应的可以属性的绑定器上。direct Exchange是RabbitMQ默认的交换机模式,也是最简单的。他是根据routing key全文匹配去寻找队列。
人话:中介现在有套房要卖售价100w,地理位置特别好,内部人都想要,所以这套房源就不对外公布了,员工1知道有内部为公布的房源(消费者routing key),所以就拿着关键字(生产者routing key)在他们内部系统去全局搜索,就能找到这套房源了
(图片均来自网络的前辈们)
P生产者,C消费者,红色消息队列
流程:按规则转发消息,这也是最灵活的。topic Exchange转发消息主要根据通配符。队列和交换机的绑定会定义一种路由模式,通配符就要在这种路由模式和路由键之间匹配后,交换机才能转发消息。
规则:在这种交换机模式下,路由键必须是一串字符,用 “.” 隔开。
路由模式必须包含一个星号“*”,主要用于匹配路由键指定位置的一个单词。
topic还支撑消息的routing key,用“*”或者“#”的模式进行绑定。“*”匹配一个单词。“#”匹配0个或者多个单词。例如:“binding key*.user.#”匹配routing key为“cn.user”和“us.user.db”,但是不匹配“user.hello”
人话:说白就是模糊匹配。买房的人想买套地理位置号的房子,在中介系统上有选择项,选择完之后会出现相对应的房源。选择项可以多选或者单选。
(图片均来自网络的前辈们)e
流程:也称消息广播的模式,就是将消息广播到所有绑定到它队列中,而不考虑routing key的值。如果配置了routing key,则routing key依然会被忽略。
(图片均来自网络的前辈们)
人话:只要注册或者关注了中介的APP或者订阅号,那么你就能收到卖房消息。
这种模式用的比较少,所以不写了,有兴趣的找度娘吧!
绑定(bingding):
它时用于将Exchange和Queue关联起来的。这样RabbitMQ就知道如何正确的将消息路由到指定的Queue了
在绑定Exchange和Queue时,一般会指定一个binding-key。消费者将消息发送给Exchange时,一般会指定一个routing key。如果binding key 与routing key相匹配,则消息将会被路由到对应的Queue上。
绑定是生产者和消费者传递的链接。生产者发哦是哪个消息到Exchange,消费者从Queue接受消息,都是根据绑定来执行的
好了,今天的分享就到这里了。下一篇分享RabbitMQ的6中工作模式以及代码。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。