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