RabbitMQ交换机类型

  • 一、Direct Exchange(直连交换机)
  • 二、 Fanout Exchange(扇型交换机)
  • 三、Topic Exchange(主题交换机)
  • 四、Headers Exchange(头交换机)

先附加下官网文档。RabbitMQ的交换机类型共有四种,是根据其路由过程的不同而划分成的:

一、Direct Exchange(直连交换机)


直连型交换机背后的路由算法很简单——消息会传送给绑定键与消息的路由键完全匹配的那个队列。 我们用直连交换机取代了只会无脑广播的扇形交换机,并且具备了选择性接收消息的能力。

这种配置下,我们可以看到有两个队列Q1、Q2绑定到了直连交换机X上。第一个队列用的是橘色(orange)绑定键,第二个有两个绑定键,其中一个绑定键是黑色(black),另一个绑定键是绿色(green)。在此设置中,发布到交换机的带有橘色(orange)路由键的消息会被路由给队列Q1。带有黑色(black)或绿色(green)路由键的消息会被路由给Q2。其他的消息则会被丢弃。

二、 Fanout Exchange(扇型交换机)


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

三、Topic Exchange(主题交换机)


(1)路由键和绑定键命名

  • 消息路由键—发送到主题交换机的消息所携带的路由键(routing_key)不能随意命名——它必须是一个用点号分隔的词列表。当中的词可以是任何单词,不过一般都会指定一些跟消息有关的特征作为这些单词。列举几个有效的路由键的例子:“stock.usd.nyse”, “nyse.vmw”, “quick.orange.rabbit”。只要不超过255个字节,词的长度由你来定。
  • 绑定键(binding key)也得使用相同的格式。主题交换机背后的逻辑跟直连交换机比较相似——一条携带特定路由键(routing key)的消息会被投送给所有绑定键(binding key)与之相匹配的队列。尽管如此,仍然有两条与绑定键相关的特殊情况:

* (星号) 能够替代一个单词。

# (井号) 能够替代零个或多个单词。

(2)示例解析,如上图:
我们将会发送用来描述动物的多条消息。发送的消息包含带有三个单词(两个点号)的路由键(routing key)。路由键中第一个单词描述速度,第二个单词是颜色,第三个是品种: “<速度>.<颜色>.<品种>”。我们创建三个绑定:Q1通过".orange.“绑定键进行绑定,Q2使用”..rabbit" 和 “lazy.#”。

队列绑定键解释:

  • Q1针对所有的橘色orange动物。
  • Q2针对每一个有关兔子rabbits和慵懒lazy的动物的消息。

消息路由键解释:

  • 一个带有"quick.orange.rabbit"路由键的消息会给两个队列都进行投送。消息"lazy.orange.elephant"也会投送给这两个队列。
  • 另外一方面,“quick.orange.fox” 只会给第一个队列。"lazy.pink.rabbit"虽然与两个绑定键都匹配,但只会给第二个队列投送一遍。“quick.brown.fox” 没有匹配到任何绑定,因此会被丢弃掉。

(3)异常情况
如果我们破坏规则,发送的消息只带有一个或者四个单词,例如 “orange” 或者 "quick.orange.male.rabbit"会发生什么呢?结果是这些消息不会匹配到任何绑定,将会被丢弃。另一方面,“lazy.orange.male.rabbit”即使有四个单词,也会与最后一个绑定匹配,并 被投送到第二个队列。

(4)注意事项
主题交换机非常强大,并且可以表现的跟其他交换机相似。

  • 当一个队列使用"#"(井号)绑定键进行绑定。它会表现的像扇形交换机一样,不理会路由键,接收所有消息。
  • 当绑定当中不包含任何一个 “*” (星号) 和 “#” (井号)特殊字符的时候,主题交换机会表现的跟直连交换机一毛一样。

四、Headers Exchange(头交换机)

头交换机类似与主题交换机,但是却和主题交换机有着很大的不同。主题交换机使用路由键来进行消息的路由,而头交换机使用消息属性来进行消息的分发,通过判断消息头的值能否与指定的绑定相匹配来确立路由规则。
在头交换机里有一个特别的参数”x-match”,当”x-match”的值为“any”时,只需要消息头的任意一个值匹配成功即可,当”x-match”值为“all”时,要求消息头的所有值都需相等才可匹配成功。

相关文章
RabbitMQ的六种工作模式
RabbitMQ如何保证消息的可靠性

RabbitMQ交换机类型相关推荐

  1. #rabbitMQ #重复消费 #可靠投递 #延时投递 #rabbitMQ交换机类型#重复消费#消息积压#消息丢失

    exchange类型: 1, direct 指定direct后, 消息会根据你设置的routeing key(路由键), 发送到对应的队列中 1,新建direct交换机 2,添加队列, 并且绑定路由键 ...

  2. RabbitMQ的交换机类型和工作模式

    RabbitMQ的交换机类型有四种 1.direct 直流交换机: 根据消息的路由键routingkey,将消息以完全匹配的方式路由到指定的队列中. 这里的匹配指的是消息本身携带的路由键和队列与交换机 ...

  3. 认识RabbitMQ交换机模型

    认识RabbitMQ交换机模型 原文:认识RabbitMQ交换机模型 前言 RabbitMQ是消息队列中间件(Message Queue Middleware)中一种,工作虽然有用到,但是却没有形成很 ...

  4. Rabbitmq交换机详解

    rabbitmq交换机 1.作用: 接受生产者的消息,然后根据路由键routingKey把消息投递到跟交换机绑定的对应的队列上 2.属性 Name: 交换机的名称 Type: 交换机的类型,direc ...

  5. 还不知道 RabbitMQ 常用的几种交换机模式?这篇小白都能看懂的 RabbitMQ 交换机模式

    要了解 RabbitMQ 的交换机发布订阅模型,先来了解下 RabbitMQ 消息传递模型的核心思想:生产者从不直接向队列发送任何消息.实际上,通常情况下,生产者甚至根本不知道消息是否会被传递到任何队 ...

  6. RabbitMQ——交换机

    1. 交换机 exchange 不指定交换机直接发送到队列时,多个消费者之间存在的是竞争关系,一个消息只能被一个消费者接收,其他的消费者不能够再次接收:交换机可以绑定多个不同的队列,但是其Routin ...

  7. RabbitMQ交换机(Fanout、Direct、Topic)三种模式详解

    一. 交换机 1.1 Exchanges 1.1.1 Exchanges概念 ​ RabbitMQ 消息传递模型的核心思想是: 生产者生产的消息从不会直接发送到队列.实际上,通常生产 者甚至都不知道这 ...

  8. RabbitMQ交换机

    1. Exchange作用 在RabbitMQ中,生产者发送消息不会直接将消息投递到队列中,而是先将消息投递到交换机中,在由交换机转发到具体的队列,队列再将消息以推送或者拉取方式给消费者进行消费. 生 ...

  9. RabbitMQ交换机简介

    介绍 RabbitMQ消息传递模型的核心思想是:生产者生产的消息从不会直接发送到队列.实际上,通常生产者甚至都不知道这些消息传递传递到了哪些队列中. 相反,生产者只能将消息发送到交换机(exchang ...

最新文章

  1. form左上角有个锁的符号_第三章 表单笔记
  2. SQL Server 索引结构及其使用(二)
  3. C++结构体,联合体
  4. windows下的虚拟内存分配分析
  5. 「递归」第3集 | 向善的信念,让技术自带光芒
  6. 交互设计精髓_设计空间的精髓
  7. 数据结构:(5)算法分析基础
  8. 学位论文多级标题编号与图表编号
  9. cordova指定版本_Cordova/Ionic构建android Gradle错误:支持的最小Gradle版本是2.14.1。当前版本是2.13...
  10. Oracle11g新特性:在线操作功能增强-Oracle11g在线重建索引功能增强 (转载)
  11. URLConnection学习
  12. silverlight的开发暂时是痛苦的
  13. scala练习100道解析
  14. 四维星装饰选材软件免费版
  15. 使用 Lvs + Nginx 集群搭建高并发架构
  16. NLP文本情感——SNOWNLP简易版
  17. InTouch蜂鸣器报警提示方法
  18. 40 个免费的面向编程初学者的视频教程
  19. 【实战模拟】使用Kali Linux进行域名解析——模拟测试
  20. java npv_java 实现Excel irr计算(改进版)

热门文章

  1. 那个学php的上吊了,这位一路名校的中国博士,突然在美国上吊自杀了
  2. carla学习笔记(三)
  3. 微信小程序底部实现自定义动态Tabbar
  4. TopMost安装和使用
  5. 0318复利计算器4.0
  6. 网易云音乐解除灰色小工具 - 资源
  7. rk3399 u-boot修改开机logo以及开机动画和开机视频
  8. Python计算机视觉编程第九章——图像分割
  9. 作为程序员的我,常用的工具软件有这些
  10. 细思极恐---十年生死两茫茫,通信人,意欲亡。