RabbitMQ从入门到精通----交换器详解

来源:互联网 发布:mac电脑卸载软件 编辑:程序博客网 时间:2024/04/29 06:23

RabbitMQ交换器详解

正如我们所理解的,当我们发送消息到RabbitMQ中,它的流程为:

  1. 发送到交换器
  2. 交互器根据Routing key(路由键)发送至相关队列

在RabbitMQ中一共提供四种交换器(Exchange):

  • direct
  • fanout
  • topic
  • headers

direct详解

direct交换器相对来说比较简单,匹配规则为:如果路由键匹配,消息就被投送到相关的队列。

这里写图片描述

在服务器中必须实现direct类型的服务器,包含一个空白字符串名称的默认交换器。当我们声明一个队列时,它会自动绑定到该交换器上,并以队列的名称作为路由键。

当然如果我们发送的消息并没有相关的路由键匹配,那么消息会被丢弃。

fanout详解

fanout交换器中没有路由键的概念,他会把消息发送到所有绑定在此交换器上面的队列中。

这里写图片描述

在这种模式下,允许我们对一个消息做多种操作。在这种模式下,需要先将队列与交换器进行绑定,当然如果交换器上面没有相关的队列,消息会被丢弃。

topic详解

topic交换器你采用模糊匹配路由键的原则进行转发消息到队列中,

这里写图片描述

例如在上图中,我们发送以log.critical与alert.critical为路由键的消息,在与交换器上绑定的队列中路由键分别为

  • log.*
  • *.critical
  • alert.*

在模糊匹配中*代表一个关键字匹配,#代表多个关键字进行匹配。

因此log.critical发送到log.*与*.critical中
因此alert.critical发送到alert.*与*.critical中

同样如果在交换器上没有匹配的交换队列,那么消息会被丢弃。

header详解

在项目中一般使用不到,使用到的时候,再补充,嘻嘻

0 0