RabbitMQ的交换机类型共有四种,是根据其路由过程的不同而划分成的

分别是Direct Exchange(直连交换机), Fanout Exchange(扇型交换机), Topic Exchange(主题交换机)与 Headers Exchange(头交换机)

以下是四种交换机的路由图及详解、

Direct Exchange(直连交换机):将一个名为Q的消息队列与某个名为D的直连交换机通过值为R的路由键绑定在一起,当一个Msg和路由键R发送到直连交换机D上时,直连交换机D会把Msg根据路由键R分发到Q队列。这种模式类似于一对一


 Fanout Exchange(扇型交换机):当一个Msg发送到扇形交换机F上时,则扇形交换机F会将消息分别发送给所有绑定到F上的消息队列。扇形交换机将消息路由给绑定到自身的所有消息队列,也就是说路由键在扇形交换机里没有作用,故消息队列绑定扇形交换机时,路由键可为空。这个模式类似于广播。


Topic Exchange(主题交换机):主题交换机是一种发布/订阅的模式,结合了直连交换机与扇形交换机的特点,消息队列与主题交换机的绑定也是通过路由键的。当一个Msg和路由键规则发送到一个主题交换机T时,T会根据路由键规则来筛选出符合规则的绑定到自身消息队列的路由键(可能是1个,也可能是N个,也可能是0个),根据符合的路由键,将消息发送到其对应的消息队列里。这个模式类似于多播,当消息的路由规则只匹配到一个路由键时,此时主题交换机可以看作是直连交换机,当路由规则匹配了主题交换机上所有绑定的队列的路由键时,此时主题交换机可以看作是扇形交换机


 Headers Exchange(头交换机):头交换机类似与主题交换机,但是却和主题交换机有着很大的不同。主题交换机使用路由键来进行消息的路由,而头交换机使用消息属性来进行消息的分发,通过判断消息头的值能否与指定的绑定相匹配来确立路由规则。在头交换机里有一个特别的参数”x-match”,当”x-match”的值为“any”时,只需要消息头的任意一个值匹配成功即可,
当”x-match”值为“all”时,要求消息头的所有值都需相等才可匹配成功。虽然至今没有遇到过头交换机,但是还是建议各位同学去了解一下。

以上如有问题,欢迎指正

下一篇:PHP中RabbitMQ之amqp扩展实现(四)

下一篇:PHP中RabbitMQ之phpAmqplib实现(五)

最新文章

  1. sqlserver表分区
  2. android之handle
  3. 开始使用pycharm了
  4. 添加 SecondaryNameNode
  5. 随手小代码——《Python编程 从入门到实践》项目1:外星人入侵
  6. C++中的4种类型转换方式
  7. 透彻掌握Promise的使用
  8. Python自学:第二章 浮点数
  9. Sprign中常用注解
  10. Java 多线程(六) synchronized关键字详解
  11. Windows中的时间(SYSTEMTIME和FILETIME) (转载)
  12. LruCache源码分析
  13. java学习笔记—第三方操作数据库包专门接收DataSource-dbutils (30)
  14. python初步学习-python文件操作
  15. 在linux下新增一块硬盘的操作。(包含大于2T的硬盘在linux下挂载操作)
  16. Java返回泛型的方法-实例
  17. 对fgets的理解
  18. LeetCode Binary Tree PostorderTranversal
  19. webpack的配置文件entry与output
  20. USB引脚及定义

热门文章

  1. Delphi10.2安装过程详解
  2. Nginx+Keepalived双主架构实现
  3. 使用mybatis的resultMap进行复杂查询
  4. git 命令常用笔记
  5. 《精通并发与Netty》学习笔记(10 - 详解NIO (一) Channel、Buffer )
  6. 跨服务器执行SQL
  7. 有关IP和子网掩码的总结
  8. 思科S系列220系列交换机多个漏洞预警
  9. Paid consultation (currently free 20190901)
  10. tensorflow搭建神经网络