看了很多文字说明,依然不是很清晰,故按照代码逻辑写了个图,一目了然:
文字说明,来自网络,不是很准确:
* exchangeType说明
* 性能排序:fanout > direct >> topic。比例大约为11:10:6
*
* direct:
* 生产端不需要将Exchange进行任何绑定(binding)操作
* 消息传递时需要一个“RouteKey”,可以简单的理解为要发送到的队列名字。
* 如果vhost中不存在RouteKey中指定的队列名,则该消息会被抛弃
*
* fanout:
* 不需要RouteKey
* 任何发送到Fanout Exchange的消息都会被转发到与该Exchange绑定(Binding)的所有Queue上
* 这种模式需要提前将Exchange与Queue进行绑定,一个Exchange可以绑定多个Queue,一个Queue可以同多个Exchange进行绑定
* 如果接受到消息的Exchange没有与任何Queue绑定,则消息会被抛弃
*
* topic:
* 任何发送到Topic Exchange的消息都会被转发到所有关心RouteKey中指定话题的Queue上
* 1.这种模式较为复杂,简单来说,就是每个队列都有其关心的主题,所有的消息都带有一个“标题”(RouteKey),
* Exchange会将消息转发到所有关注主题能与RouteKey模糊匹配的队列。
* 2.这种模式需要RouteKey,也许要提前绑定Exchange与Queue。
* 3.在进行绑定时,要提供一个该队列关心的主题,如“#.log.#”表示该队列关心所有涉及log的消息(一个RouteKey为”MQ.log.error”的消息会被转发到该队列)。
* 4.“#”表示0个或若干个关键字,“*”表示一个关键字。如“log.*”能与“log.warn”匹配,无法与“log.warn.timeout”匹配;但是“log.#”能与上述两者匹配。
* 5.同样,如果Exchange没有发现能够与RouteKey匹配的Queue,则会抛弃此消息。
rabbitmq交换机类型图解(exchangeType:direct,topic,fanout)
http://www.hu-rong.com/article/500
- 相关文章
- rabbitmq无法启动
- rabbitmq基础教程
- 热门文章
- win7中将文件拷贝到虚拟机linux下
- phpexcel设置行高及列宽,背景颜色,
- rabbitmq无法启动
- intellij idea不显示git push按钮
- php7中使用mongodb的aggregate进行
- laravel页面静态化的方法
- centos7.4 64位下swoole安装及配置
- navicate连接mycat报1184错误
- curl设置超时不起作用(CURLOPT_TIM
- devops-jenkins容器为pending状态
- 好评文章
- phpexcel设置行高及列宽,背景颜色,
- php7中使用mongodb的aggregate进行
- intellij idea打开文件所在文件夹
- windows下使用MongoDB Compass Com
- win7中将文件拷贝到虚拟机linux下
- laravel 中悲观锁 & 乐观锁的使用
- 单点登录sso原理及php实现方式及de
- navicate连接mycat报1184错误
- rabbitmq无法启动
- laravel整合dingo/api方法步骤:jwt
- 我的项目
- 【github】www.github.com/hurong241
- 【码云】gitee.com/hu_rong/projects
- 【docker hub】hub.docker.com/repositories/hurong241
- 【packagist】packagist.org/users/hurong241/packages
- 站点信息
- 建站时间:2011年
- 文章数:623篇
- 浏览数:1357698