> 技术文档 > RabbitMQ之交换机_mq交换机类型

RabbitMQ之交换机_mq交换机类型

目录

前言

Exchange(交换机)的类型与应用

- 交换机的属性

1.直连交换机:Direct Exchange

2. 主题交换机:Topic Exchange

3. 扇形交换机:Fanout Exchange

4. 默认交换机(直连)


前言

在讲交换机之前我们需要了解一些概念,在RabbitMQ工作流程有一项叫Exchange(交换机:消息的分发中心),它的作用是将生产者发送的消息转发到具体的队列,队列再将消息以推送或者拉取方式给消费者进行消费。

原:在RabbitMQ中生产者发送的信息不会直接投递到队列中,而是先将消息投递到交换机中,在由交换机路由到一个或多个队列中。

流程:生产者 --(路由键)---> 交换机 --(绑定键)---> 队列 --(pull,push)--->消费者

这里就需要了解这两个东西:

  • 路由键(RoutingKey)每个消息都有一个称为路由键(routing key)的属性,它其实就是一个简单的字符串(或者可以说是一种规则的字符串)
  • 绑定键(BindingKey)就是指定将队列跟接收路由键的交换机进行绑定

生产者将信息发送给哪个Exchange是由RoutingKey决定的,而Exchange与哪个队列绑定是由BindingKey决定的。

Exchange(交换机)的类型与应用

- 交换机的属性

除交换机类型外,在声明交换机时还可以附带许多其他的属性,其中最重要的几个分别是:

  • Type:交换机名称
  • Durability:是否持久化。如果持久性,则RabbitMQ重启后,交换机还存在
  • Auto-delete:当所有与之绑定的消息队列都完成了对此交换机的使用后,是否删掉它
  • Internal:当前Exchange是否用于RabbitMQ内部使用,默认fasle
  • Arguments:扩展参数

这里就直接开始操作,配置在一篇就已做了讲解,非常简单!接下来的代码也之上在原基础上做了添加。

项目结构:

所需依赖:

   org.springframework.boot spring-boot-starter-amqp   org.springframework.boot spring-boot-starter-web   org.projectlombok lombok true 

1.直连交换机:Direct Exchange

  • 这是最简单的一种交换机类型。
  • 当一个队列与交换机绑定时,需要指定一个路由键(RoutingKey),只有当消息的路由键与该队列绑定时指定的绑定键(BindingKey)完全匹配时,消息才会被路由到该队列。

如下图:

一、p发送消息时带了一个叫black的routing_key,交换机接受后会送到与black绑定的binding_key的队列中,也就是Q2。以此类推...

二、还有一种情况,当Q2也与交换机绑定了blac