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