RabbitMQ的交换机类型(三)

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实现(五)

原文地址:https://www.cnblogs.com/php-linux/p/11293881.html

时间: 2024-08-30 07:37:56

RabbitMQ的交换机类型(三)的相关文章

RabbitMQ各种交换机类型Exchange Types介绍

最新版本的RabbitMQ有四种交换机类型,分别是Direct exchange.Fanout exchange.Topic exchange.Headers exchange. 一.Direct Exchange 它处理路由键.需要将一个队列绑定到交换机上,要求该消息与一个特定的路由键完全匹配.这是一个完整的匹配.如果一个队列绑定到该交换机上要求路由键 “dog”,则只有被标记为“dog”的消息才被转发,不会转发dog.puppy,也不会转发dog.guard,只会转发dog. 二.Fanou

RabbitMQ之交换机及spring整合

交换机 交换机属性: Name:交换机名称 Type:交换机类型 direct.topic.fanout.headers Durability:是否需要持久化,true为持久化 Auto Delete:当最后一个绑定到Exchange上的队列删除后,自动删除该Exchange Internal:当前Exchange是否用于RabbitMQ内部使用,默认为False Arguments:扩展参数,用于扩展AMQP协议,定制化使用 直流交换机 直连交换机Direct Exchange(完全匹配路由k

交换机的三种转发模式

下面是交换机6大工作原理: 1.基于源MAC地址学习 2.基于目标MAC地址转发 3.同一接口可以学习到多个MAC地址 4.同一个MAC地址被多个接口学习到,选择后学习到的接口 5.收到广/组播帧, 向本VLAN的其他所有接口转发 6.对于没有目标MAC地址表项的帧,向本VLAN的其他所有接口转发 交换机的三种转发模式: 1.直通式转发: 是指交换机在收到数据帧后,不进行缓存和校验,而是直接转发到目的端口. 2.存储式转发: 交换机首先在缓冲区中存储接收到的整个数据帧,然后进行CRC校验,检查数

RabbitMQ八:交换机类型Exchange Types--Topic介绍

前言 上一章节,我们说了两个类型,本章我们说一下其三:Topic Exchange Topic Exchange  Topic Exchange – 将路由键和某模式进行匹配.此时队列需要绑定要一个模式上.符号"#"匹配一个或多个词,符号"*"匹配不多不少一个词.因此"audit.#"能够匹配到"audit.irs.corporate",但是"audit.*" 只会匹配到"audit.irs&qu

rabbitmq 交换机类型

图:Direct 图:Fanout 图:Topic

部署标准交换机和分布式交换机(三)

实验目标: 部署标准交换机和分布式交换机 实验要求: 标准交换机的配置: 分别在两台esxi主机中添加6块物理网卡,桥接到vmnet1. 分别在两台esxi主机配置标准交换机,将vSwitch0交换机添加一个物理网卡,实现负载均衡和容错. 分别在两台esxi主机中,将vSwitch0交换机添加一个端口组,把esxi-b主机中的虚拟机vm1桥接到新添加的端口组上. 分别在两台esxi主机中,新创建一个交换机vSwitch1,主要用于vmotion的流量通信使用,两个vmotion的IP地址为10.

RabbitMQ学习系列(三): C# 如何使用 RabbitMQ

上一篇已经讲了Rabbitmq如何在Windows平台安装,还不了解如何安装的朋友,请看我前面几篇文章:RabbitMQ学习系列一:windows下安装RabbitMQ服务 , 今天就来聊聊 C# 实际开发的过程中,怎么调用 用RabbitMQ. 一.客户端 RabbitMQ 有很多客户端API,都非常的好用.我们在一边,一直用的都是 EasyNetQ,所以这里的 demo 只介绍 EasyNetQ 客户端实现.其他的客户端,大家自己去研究吧. EasyNetQ 是一个易于使用的RabbitMQ

rabbitmq+java入门(三)exchange的使用

参考:http://www.rabbitmq.com/tutorials/tutorial-three-java.html 先决条件 本教程假定RabbitMQ 在标准端口(5672)上的本地主机上安装并运行.如果您使用不同的主机,端口或证书,则连接设置需要进行调整. 在之前的教程中,我们创建了一个工作队列.工作队列背后的假设是,每个任务只被传递给一个消费者.在这一部分,我们将做一些完全不同的事情 - 我们会向多个消费者传递信息.这种模式被称为"发布/订阅". 为了说明这种模式,我们将

rabbitmq系统学习(三)集群架构

RabbitMQ集群架构模式 主备模式 实现RabbitMQ的高可用集群,一般在并发和数据量不高的情况下,这种模型非常的好用且简单.主备模式也称为Warren模式 HaProxy配置 listen rabbitmq_cluster bind 0.0.0.0:5672 # 配置TCP模式 mode tcp #简单的轮询 balance roundrobin #主节点 server bhz76 192.168.11.76:5672 check inter 5000 rise 2 fall 3 ser