RabbitMQ的五种工作模式和使用场景

本文介绍了RabbitMQ的五种工作模式:简单模式、工作模式、发布订阅、路由模式和主题订阅模式,以及它们在异步处理、应用解耦、流量削峰等常见场景中的应用。同时,讨论了采用RabbitMQ可能带来的系统复杂性和数据一致性问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

五种模式的介绍

1.简单模式
在这里插入图片描述

由生产者提供一个消息,消费者去接受这个消息,中间不需要交换器,也不需要消息队列绑定交换器,双方共用同一个chanel信道就能完成消息的传递。
2.工作模式
在这里插入图片描述
由生产者提供一个消息,消费者去接受这个消息,中间不需要交换器,也不需要消息队列绑定交换器,双方共用同一个chanel信道就能完成消息的传递。比起简单模式来说,工作模式只是将消费者的数量增多。
3.发布订阅
在这里插入图片描述
这里需要用到交换器,这个交换器的类型是FANOUT群发,需要指定交换器的名称和类型,但不需要消息队列绑定交换器,由于每个消费者都用自己的信道,所以最好信道由消费者创建,或者提前创建好。
4.路由模式在这里插入图片描述
这里既需要用到交换器,同时消息队列需要绑定到交换器,交换器的类型为DIRECT,交换器会根据消息提供的routing-key与消息队列的key相比较,将消息分配到对应的消息队列中。
5.主题订阅模式
在这里插入图片描述
这个模式和上面的路由模式最大的区别就是这里的消息队列的key支持通配符,等同于可以做模糊查询,这里的*代表一个单词,点代表分隔符,#代表0个或者多个单词,列如消息所带的routingKey如果是lazy.orange.rabbit,这个消息两个消息队列都会收到,这里的A.B.C的模式一般是性格,颜色,种类,是对一个物体的多种描述方式。

常见的使用场景

1.异步处理
如果一个程序同步顺序执行,在前面的进程没有结束之前,后面的进程只能等待,如果使用RabbitMQ
异步处理,能够大幅降低程序执行时间。
2.应用解耦
应用解耦是使用异步请求实现的,一个下订单的过程需要调用多个服务,如果程序同步执行,一旦有一个应用出现问题整个业务就挂掉了,而这个出现问题的应用可能只是并不关键,对数据的一致性要求没有那么高,只需最终一致的,列如新建的订单,付款,库存的减少,这里面库存的减少就属于这种应用,当只是这个应用出现问题,并非必要使整个业务失败,而是使用RabbitMQ先使整个业务完成,后面再来处理库存的问题。
3.流量削峰
秒杀活动,流量过大,服务器压力太大,导致应用挂掉,为了解决这个问题,可以在应用前端加入消息队列。多余的业务直接拒绝掉,保证应用的可用。

相应的问题

提高了系统的复杂性,使数据一致性的问题更加严重,在吞吐量上不如kakfa和RocketMQ,本身也限制了整个应用的最大业务承受量,如果MQ挂掉也会导致整个业务挂掉。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值