作者处于学习阶段,刚刚完成RabbitMQ的学习,作为学生,我会用更通俗的说法,来叙述自己对RabbitMQ的了解。愿各位大佬看到有见解错误的地方和叙述不好的地方,能够帮忙纠正。来帮助大家更加深入的了解RabbitMQ。
一、MQ的基本概念和MQ的特点
1.MQ的介绍
MQ消息队列,作为科班学生。在我们数据结构的学习中,学习到过队列,队列所遵循的是先进先出原则FIFO。我们学习到的MQ同样也是一种遵循先进先出原则FIFO的一种数据结构。
2.MQ的用途
①流量削峰
流量削峰更多应用在我们网络拥挤的情况中。比如:商品抢购等情景等。举一个实际的例子,在2017年鹿晗和关晓彤宣布恋情时,就导致了微博服务器的拥挤。面对这种情况我们必然要做相应的措施。如若不做对应的措施,可能会导致系统挂掉,出现“宕机”现象。(宕机:计算机术语,来源为down机。计算机操作系统错误或者硬件出现问题,导致系统长时间无法响应。)于是就有了MQ来解决这个问题。MQ在大量用户需要访问时,应用系统无法承受这大量的用户。可以通过队列来进行缓冲,避免直接访问其业务接口,导致出现的"宕机"现象。
②应用解耦
经典举例:当做电商系统时,收货模块没有异常,能够正常收货。但是订单模块出现问题,就会导致显示为收货失败。实际的收货情况,理应与订单模块没有关系。但是订单模块的错误,导致收货出现了问题。MQ便可解决此问题。可在收货模块收货成功后,将收货信息持久化保留在队列中,可以返回给收货系统收获成功。订单模块订阅发货消息。
③异步处理
以往A发送给B消息时,假如B需要很长时间才处理完消息。A需要等待很久,或者过一段时间询问一次B,询问是否完成,但是加入MQ之后,A将消息发布后,可以去干别的一些事情。而B在完成消息的处理后,将完成消息发送到MQ当中,再由MQ发送给A。大大提高了系统的性能。