最近在项目中用到了MQ,所以在这里做个总结。现在好多公司都在用,肯定是因为好处多多了。在这里我就根据我自己的经验进行总结一下RabbitMQ的好处和它的五种队列。
MQ好处
1.帮助应用程序与应用程序之间解耦。
应用场景
用redis缓存大广告位的数据的时候。如果后台更新大广告位的数据,需要进行把数据同步到redis中去。
解决方案一:在前台系统开放接口,redis的删除接口。
缺点:因为如果前台系统版本更新或做更改,会影响到后端团队的版本升级,耦合度比较高。
解决方案二:用MQ进行同步。
这样前台系统与后台系统完全分离,不需要前台给后台提供任何接口,所以前台做任何更改影响不到后台。
2.处理高并发起缓冲作用。
应用场景
在秒杀或抢红包的时候,这样的高并发的情况下操作数据库会引起数据库崩溃,这时候,如果把用户的一些订单消息发送到消息中间件中,后期再进行消费处理,保存到数据库中,这样会 大大减少数据库的压力。
3.提高吞吐量
当系统中的同步处理方式严重影响了吞吐量,比如日志记录。假如需要记录系统中所有的用户行为日志,如果通过同步的方式记录日志势必会影响系统的响应速度,当我们将日志消息发送到消息队列,记录日志的子系统就会通过异步的方式去消费日志消息。
RabbitMQ五种队列
1.简单队列
一个生产者对应一个消费者。
2.work模式
一个生产者对应多个消费者,一个生产者产生的消息可以供多个消费者消费(但是一个消息只能被其中一个生产者进行消费)
并且可以设置哪个消费者可以多消费,能者多劳。设置它的basicQos方法。
3.订阅模式
4.路由模式
5.通配符模式
比上一个模式多了用通配符可以配置。这样如果消费端如果需要好几种消息的时候,不用一个一个的设置,直接用通配符可以接收自己想要的各种消息。
通常,在项目中会给根据自己的需求去选定这几种模式要用哪一种。除了这些,MQ的容错机制等等一些其它知识过段儿时间再给大家讲解。