前言:
MQ 是什么?队列是什么,MQ 我们可以理解为消息队列,队列我们可以理解为管道。以管道的方式做消息传递。
场景:
1.优化用户体验,当我们在网上购物结算时,就会发现,界面会提醒我们,让我们稍等,以及一些友好的图片文字提醒
2.在我们平时的超市中购物也,遇到大批人一窝蜂一样涌入收银台,怎么办?所以超时,会设置一个走廊,让人们排队一个一个慢慢结算。
在网络购物中也会遇到同样的情况,MQ就会帮我们解决这个问题。
RabbitMQ模式
1.简单模式:非常简单的模式,一发一收
2.工作模式 :与简单模式一样只是有多个消费者,采用轮询模式,但是资源分配不公平
3.公平模式:资源分配公平的工作模式
4.订阅模式:消息产生者将消息通过交换机放入队列,对应消息队列的消费者拿到消息进行消费
5.路由模式:与订阅模式一样,只是绑定队列时,加入了路由键
6.主题模式:与路由模式一样,只是路由键可以进行模糊匹配。像SQL语句中的 like% 和like%
SpringBoot整合RabbitMQ
- 直接进入正题,这里先写平时用的最多的路由键模式,其他模式以后补上来
POM依赖
<!--rabbitmq-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
<version>1.5.2.RELEASE</version>
</dependency>
</dependencies>
application配置
#rabbitmq配置
spring.rabbitmq.host=127.0.0.1
spring.rabbitmq.port=5672
spring.rabbitmq.username=miro
spring.rabbitmq.password=xxxxx
spring.rabbitmq.virtual-host=mirovh
绑定交换机设置config类
@Configuration
public class RouteConfig {
//声明交换机
@Bean
public DirectExchange directExchange(){
return new DirectExchange("direct-ex"); //交换机的名字direct-ex
}
//创建队列 2个队列就要2个消费者
@Bean
public Queue directQueue1(){
return new Queue("direct-queue1"); //队列1的名字direct-queue1
}
@Bean
public Queue directQueue2(){
return new Queue("direct-queue2"); //队列2的名字direct-queue2
}
//绑定队列到交换机的路由键上面
@Bean
public Binding bindingDirectExchange1(){
return BindingBuilder.bind(directQueue1()).to(directExchange()).with("dq1");//路由键名字dq1