MQ,消息队列,消息可以理解为一个业务现场,而队列则是保存这个业务现场的容器,而B服务对消息的处理,则是一个对业务现场的异步处理。所以,消息队列的本质,就是将某个业务现场暂存下来,异步处理。
有了以上对于MQ的本质认识,那么,接下来的MQ可应用的几个业务场景,就会很好理解了。
1. 异步。正如上面的demo,异步就是MQ的第一个能力。可以将一些非核心流程,如日志,短信,邮件等,通过MQ的方式异步去处理。这样做的好处是缩短主流程的响应时间,提升用户体验。
2. 解耦。假设现在,日志不光要插入到数据库里,还要在硬盘中增加文件类型的日志,同时,一些关键日志还要通过邮件的方式发送给指定的人。那么,如果按照原来的逻辑,A可能就需要在原来的代码上做扩展,除了B服务,还要加上日志文件的存储和日志邮件的发送。但是,如果你使用了MQ,那么,A服务是不需要做更改的,它还是将消息放到MQ中即可,其它的服务,无论是原来的B服务还是新增的日志文件存储服务或日志邮件发送服务,都直接从MQ中获取消息并处理即可。这就是解耦,它的好处是提高系统灵活性,扩展性。
3. 消峰。这个其实也很好理解,因为MQ的本质就是业务的排队。所以,面对突然到来的高并发,MQ也可以不用慌忙,先排好队,不要着急,一个一个来。消峰的好处就是避免高并发压垮系统的关键组件,如某个核心服务或数据库等。
异步,解耦,消峰,MQ的三大主要应用场景
消息中间件(一)MQ详解及四大MQ比较
https://www.aboutyun.com/thread-26974-1-1.html
ActiveMQ详细入门使用教程
https://blog.csdn.net/qq_33404395/article/details/80590113
RabbitMQ快速入门(详细)
https://blog.csdn.net/kavito/article/details/91403659
RocketMQ入门教程
https://blog.csdn.net/qq_34462387/article/details/86562856
Kafka入门
https://baijiahao.baidu.com/s?id=1651919282506404758&wfr=spider&for=pc
https://blog.csdn.net/valada/article/details/79910104
pulsar