1、什么是MQ?
消息总线(Message Queue),是一种跨进程、异步的通信机制,用于上下游传递消息。由消息系统来确保消息的可靠传递。具有应用解耦、异步、流量削锋、数据分发、错峰流控、日志收集等等功能。
2、RabbitMQ整体架构
RabbitMQ组件
- Publisher:消息生产者
- Exchange:消息交换器,将生产者生产的消息与消息队列进行绑定
- dirct:消息中的路由键(routing key)如果和Binding中的binding key一致,交换器就将消息发到对应的队列中。路由键与队列名完全匹配。即点对点的方式。
- fanout:每个发到fanout类型交换器的消息都会分到所有绑定的队列上去。fanout交换器不处理该路由键,只是简单的将队列绑定到交换器上,每个发送到交换器的消息都会被转发到与该交换器绑定的所有队列上。很像子网广播,每台子网内的主机都获得了一份复制的消息。fanout类型转发消息是最快的。即一对多的方式。
- topic:topic交换器通过模式匹配分配消息的路由键属性,将路由键和某个模式进行匹配,此时队列需要绑定到一个模式上。它将路由键(routing-key)和绑定键(bingding-key)的字符串切分成单词,这些单词之间用点隔开。它同样也会识别两个通配符:"#“和”*"。#匹配0个或多个单词,匹配不多不少一个单词。即通配符的方式。
3、使用Docker安装RabbitMQ
-- 安装RabbitMQ
docker pull daocloud.io/library/rabbitmq:3.6.9-management
--运行RabbitMQ
docker run -d -p 5672:5672 -p 15672:15672 --name myrabbitmq 281ee777b811
成功访问15672端口
4、添加Exchange
5、添加Queue并与exchange进行绑定
6、SpringBoot项目引入RabbitMQ
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
6.2、在application.properties中配置RabbitMQ相关信息
spring.rabbitmq.host=xxxx
spring.rabbitmq.username=xxx
spring.rabbitmq.password=xxx
6.1、使用RabbitTemplate操作MQ
@Test
public void sendMsg(){
rabbitTemplate.convertAndSend("exchange.direct",
"atguigu",
"this is direct msg");
}