本篇文章学习于 bilibili黑马 的视频 (狗头保命)
同步通讯 & 异步通讯 (RabbitMQ 的前置知识)
- 同步通讯:类似打电话,只有对方接受了你发起的请求,双方才能进行通讯, 同一时刻你只能跟一个人打视频电话。
- 异步通讯:类似发信息,不用对方接受,你就可以直接发信息,而且可以多线操作,同时跟多人发信息。
开启 RabbitMQ
RabbitMQ
RabbitMQ对应的架构
- publisher:生产者,也就是发送消息的一方
- consumer:消费者,也就是消费消息的一方
- queue:队列,存储消息。生产者投递的消息会暂存在消息队列中,等待消费者处理
- exchange:交换机,负责消息路由。生产者发送的消息由交换机决定投递到哪个队列。
- virtual host:虚拟主机,起到数据隔离的作用。每个虚拟主机相互独立,有各自的exchange、queue
简单的收发消息 (exchange & queue)
1. 添加 exchange
2. 添加 queue
3. 绑定 exchange 和 queue
4. 发送消息
5. 查看接受的消息
数据隔离
Spring AMQP
项目中使用 RabbitMQ
发送消息
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!--AMQP依赖,包含RabbitMQ-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<!--单元测试-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
</dependencies>
接收消息
WorkQueues模型
如何才能使得能者多劳, 不会浪费效率呐?
引入交换机之后的 生产者消费者模型
Fanout 交换机
发送消息, 并接收处理