RabbitMQ四种交换机类型介绍

最新版本的RabbitMQ有四种交换机类型,分别是Direct exchange、Fanout exchange、Topic exchange、Headers exchange。

1.Direct Exchange

处理路由键。需要将一个队列绑定到交换机上,要求该消息与一个特定的路由键完全匹配。这是一个完整的匹配。如果一个队列绑定到该交换机上要求路由键 “abc”,则只有被标记为“abc”的消息才被转发,不会转发abc.def,也不会转发dog.ghi,只会转发abc。
在这里插入图片描述

2.Fanout Exchange

不处理路由键。你只需要简单的将队列绑定到交换机上。一个发送到交换机的消息都会被转发到与该交换机绑定的所有队列上。很像子网广播,每台子网内的主机都获得了一份复制的消息。Fanout交换机转发消息是最快的。
在这里插入图片描述

3.Topic Exchange

将路由键和某模式进行匹配。此时队列需要绑定要一个模式上。符号“#”匹配一个或多个词,符号“”匹配不多不少一个词。因此“abc.#”能够匹配到“abc.def.ghi”,但是“abc.” 只会匹配到“abc.def”。
在这里插入图片描述

4.Headers Exchanges

不处理路由键。而是根据发送的消息内容中的headers属性进行匹配。在绑定Queue与Exchange时指定一组键值对;当消息发送到RabbitMQ时会取到该消息的headers与Exchange绑定时指定的键值对进行匹配;如果完全匹配则消息会路由到该队列,否则不会路由到该队列。headers属性是一个键值对,可以是Hashtable,键值对的值可以是任何类型。而fanout,direct,topic 的路由键都需要要字符串形式的。

匹配规则x-match有下列两种类型:

x-match = all :表示所有的键值对都匹配才能接受到消息
x-match = any :表示只要有键值对匹配就能接受到消息

假设有三个队列:A队列、B队列、C队列,四种类型交换机分别为:直接交换机、扇形交换机、主题交换机和头部交换机。 1. 直接交换机案例: 将直接交换机命名为direct_exchange,将A队列绑定到direct_exchange上,routing_key为A,将B队列绑定到direct_exchange上,routing_key为B,将C队列绑定到direct_exchange上,routing_key为C。 当生产者发送消息时,指定routing_key为A,则该消息将被发送到A队列;指定routing_key为B,则该消息将被发送到B队列;指定routing_key为C,则该消息将被发送到C队列。 2. 扇形交换机案例: 将扇形交换机命名为fanout_exchange,将A队列、B队列、C队列都绑定到fanout_exchange上。 当生产者发送消息时,该消息将被发送到fanout_exchange上,fanout_exchange会将该消息广播到所有绑定到它上面的队列中,即A队列、B队列、C队列都将收到该消息。 3. 主题交换机案例: 将主题交换机命名为topic_exchange,将A队列绑定到topic_exchange上,binding_key为“*.A.#”;将B队列绑定到topic_exchange上,binding_key为“*.B.#”;将C队列绑定到topic_exchange上,binding_key为“*.C.#”。 当生产者发送消息时,指定routing_key为“x.A.y”,则该消息将被发送到A队列;指定routing_key为“x.B.y”,则该消息将被发送到B队列;指定routing_key为“x.C.y”,则该消息将被发送到C队列。 4. 头部交换机案例: 将头部交换机命名为headers_exchange,将A队列绑定到headers_exchange上,headers为{“x-match”: “any”, “key1”: “value1”};将B队列绑定到headers_exchange上,headers为{“x-match”: “all”, “key1”: “value1”, “key2”: “value2”};将C队列绑定到headers_exchange上,headers为{“x-match”: “any”, “key2”: “value2”}。 当生产者发送消息时,指定headers为{“key1”: “value1”},则该消息将被发送到A队列和B队列;指定headers为{“key1”: “value1”, “key2”: “value2”},则该消息将被发送到B队列和C队列。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

熊猫-IT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值