几种常用exchange总结
通过前面几篇文章的学习,我们知道了常用的几种交换机:direct exchange、topic exchange、fanout exchange三种交换机。本篇文章我们对这三种交换机进行总结。
Direct exchange:直连交换机。
定义:根据路由键(routingkey)需要完全匹配上才可以。会把消息路由到那些bingding key与routing key完全匹配的队列中。Rabbit mq默认的路由就是这种。
单个绑定示意图:
说明:
我们可以看到有三个routingkey:orange、black、green.如果生产者P发送消息的key是orange(需要完全匹配的)那么将会被路由的Q1这个消费者上。如果发送的是black或者是green的时候,将会被路由到Q2上面。
多个绑定示意图:
说明:
将相同的key绑定在不同的队列中。当生产者P发送消息key是black的时候,Q1和Q2都会被接收到。
简单理解:
以手机充电线的接口为例:
手机充电接口,在之前就小口的,苹果先用type-c接口的充电线。此时富士康需要生产不同的充电接口来供应不同的手机供应商。当时苹果手机的时候,只识别type-c。如上图单个绑定。
现在手机都使用了type-c接口。这个时候,富士康在生产充电线的时候,只需要生产一种即可。此时就如多个绑定一样。
Topic Exchange:主题交换机
此种交换机的routingkey不能有任意的。必须是由点分开的一串单词。可以由多个单词,但是有最大限制。最大限制是:255bytes.
Topic交换机与direct交换机有点类似:需要使用指定的key发送消息将被发送到所有使用匹配绑定key的队列。
不同点:topic exchange支持模糊匹配。匹配规则:
*:表示匹配任意一个单词
#:表示匹配任意一个或多个单词。
一句话:所有符合routingkey(此中状态下的key可以是一个表达式)的routingkey所有bingd的队列都可以收到消息。
Topic Exchange示意图:
说明:
我们可以到routing key有模糊匹配。当生产者P发送a.orange.b消息的时候,会被Q1队列接收。规则见上。
Fanout Exchange:广播模式
此种模式下,会把所有发送到当前交换机的消息全部路由到所有与当前交换机绑定的队列中去。
运行示意图:
本文是系列文章,出处:www.kaigejava.com.http://kaigejava.com/article/detail/506
凯哥公众号:凯哥Java(kaigejava)
网友评论