RabbitMQ各种Exchange交换机类型介绍

上一篇我们介绍了RabbitMQ的【核心概念和AMQP协议】,RabbitMQ 是 AMQP(高级消息队列协议)的标准实现:

接下来我们具体的认识下 Exchange (交换机)的作用以及类型有哪些?

1.Exchange的作用

AMQP 协议中的核心思想就是生产者和消费者的解耦,而Exchange的主要作用还是为了解耦,生产者不直接将消息投递给队列,而是将消息投递给Exchange,然后Exchange根据相应的路由规则投递给队列,最后队列将消息投递到消费者。

举个例子,寄件人(生产者/Publisher),快递公司(交换机/Exchange),快递员(队列/Queue),收货人(消费者/Consumer),寄件人把物品(消息数据/Message)运动到快递公司,快递公司接到货后,依据一定的填写信息(路由分发规则/Routing key),将物品打包装箱后分配给快递员,快递员携带物品并根据上面填写的信息运送,最后送达目标收货人手中。

2.Exchange的属性:

  • Name:交换机名称;
  • Type:交换机类型direct、topic、fanout、headers;
  • Durability:是否需要持久化,true为持久化;
  • Auto Delete:当最后一个绑定到Exchange上的队列删除后,自动删除该Exchange;
  • Internal:当前Exchange是否用于RabbitMQ内部使用,默认为false;
  • Arguments:扩展参数,用于扩展AMQP协议自制定化使用;

3.Exchange的类型

3.1 Fanout Exchange(广播模式)

  • 工作原理:Fanout Exchange 比较特殊,会忽略路由键的设置,只需要简单的将队列绑定到交换机,直接将 1个 Message 广播到所有绑定的 Queue 中。很像子网广播,每台子网内的主机都获得了一份复制的消息。
  • 特点:Fanout交换机转会忽略路由键的设置,发送消息速度最快。 

3.2 Direct Exchange (推送模式)

  • 工作原理:Direct Exchange 将 Exchange 和 Queue(队列)绑定同时指定路由键,在发消息的时候也需要指定路由键,且路由键必须要完全一致。
  • 特点:设置路由键,Point to point 模式发送消息,发送速度较快;

    =》例如指定了路由键是pig,那么只有与exchange绑定并且路由键为pig的队列才会收到消息。

扫描二维码关注公众号,回复: 12696885 查看本文章

3.3 Topic Exchange (匹配/订阅模式)

  • 工作原理:与Direct Exchange基本相同,唯一区别在于路由键。Topic exchange 的路由键可以去进行模糊匹配,匹配规则:
  1. *  表示单个模糊匹配。例如,路由键是   *.apple.big  则表示第一个单词可以是任意的,只需后边单词完全匹配即可。
  2. #  表示单个或多个模糊匹配。例如,路由键是 #.little ,那么发送消息的路由键可以是 green,apple,little,也就是说前面的单词是任意的。
  • 特点:路由键匹配,发送消息速度较快;

   =》注:这种情况下队列会收到所有路由器中符合topic规则的消息。

3.4 Headers exchange (报头模式)

  • 工作原理:
  1. 标头交换设计用于在多个属性上进行路由,这些属性比路由关键字更容易表示为邮件标头。报头交换忽略路由键属性。相反,用于路由的属性取自Headers属性。如果标头的值等于绑定时指定的值,则认为消息匹配。
  2. 可以使用多个报头进行匹配,将队列绑定到报头交换。在这种情况下,代理需要来自应用程序开发人员的另一条信息,即,它是应该考虑任何头匹配的消息,还是应该考虑所有头匹配的消息?这就是“x-Match”绑定参数的用途。当“x-Match”参数设置为“any”时,只有一个匹配的标头值就足够了。或者,将“x-Match”设置为“all”要求所有值必须匹配。
  3. 标题交换可以被视为“direct exchanges on steroids”。因为它们基于标头值进行路由,所以它们可以用作直接交换,其中路由关键字不必是字符串;例如,它可以是integer 整数或hash 散列(dictionary字典)。
  • 特点:忽略路由键属性,可以使用多个报头进行匹配,发送消息速度较快;

以上就是对Exchange交换机类型介绍,根据自己的业务场景结合,选择合适的交换机类型实现业务处理;

猜你喜欢

转载自blog.csdn.net/ChaITSimpleLove/article/details/109063565