消息队列(RabbitMQ)
-
队列: 一种容器可存入元素,删除元素,特点是 先进先出。
-
优点: 解耦,通讯,削峰,异步
一,导入依赖
<!-- rabbitmq -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
二,配置application.yml
rabbitmq:
host: 192.168.80.188
password: guest
username: guest
三,交换器
// 语法格式
rabbitTemplate.convertAndSend("交换器名称","路由规则","数据");
1.直接交换器
生产者
/**
* @description:直联交换器
* @author: Teao
* @date: 2022/7/17 17:35
* @param: []
* @return: com.wangshidai.item.entity.R
**/
@ApiOperation("RabbitMQ测试")
@GetMapping("/mq")
public R mq() throws IOException {
log.info("RabbitMQ~~~~");
// 直联交换器:向mq服务器推送消息
rabbitTemplate.convertAndSend("aaa","直联交换器:向mq服务器推送消息");
return new R(1000,"推送成功", null);
}
消费者
/**
* @program: SpringFramework
* @description:时刻监听着aaa队列
* @author: teao
* @create: 2022-07-17 17:24
**/
@Component
@RabbitListener(queues = "aaa")
public class Customer01 {
@RabbitHandler
public void aaahandle(String message){ // 接收队列中的消息
System.out.println("直接交换器中的消息:"+message);
}
}
2.广播交换器(fanout交换器)
创建广播交换器
给广播交换器绑定队列
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pTErTrkC-1659152989702)(C:\Users\TiiT\AppData\Roaming\Typora\typora-user-images\image-20220717175022596.png)](https://img-blog.csdnimg.cn/0c0a3bc7db5147ea95e16453a4fab1bc.png)
3.主题交换器
创建交换器并绑定(绑定时添加路由规则routingkey)