1、为什么使用消息队列?
其实就是问问你消息队列都有哪些使用场景,然后你项目里具体是什么场景,说说你在 这个场景里用消息队列是什么?
面试官问你这个问题,期望的一个回答是说,你们公司有个什么业务场景,这个业务场 景有个什么技术挑战,如果不用 MQ 可能会很麻烦,但是你现在用了 MQ 之后带给了你很 多的好处。消息队列的常见使用场景,其实场景有很多,但是比较核心的有 3 个:解耦、异 步、削峰。
解耦: A 系统发送个数据到 BCD 三个系统,接口调用发送,那如果 E 系统也要这个数据呢?那 如果 C 系统现在不需要了呢?现在 A 系统又要发送第二种数据了呢?而且 A 系统要时时刻 刻考虑 BCDE 四个系统如果挂了咋办?要不要重发?我要不要把消息存起来? 你需要去考虑一下你负责的系统中是否有类似的场景,就是一个系统或者一个模块,调 用了多个系统或者模块,互相之间的调用很复杂,维护起来很麻烦。但是其实这个调用是不 需要直接同步调用接口的,如果用 MQ 给他异步化解耦,也是可以的,你就需要去考虑在你 的项目里,是不是可以运用这个 MQ 去进行系统的解耦。
异步: A 系统接收一个请求,需要在自己本地写库,还需要在 BCD 三个系统写库,自己本地写 库要 30ms,BCD 三个系统分别写库要 300ms、450ms、200ms。最终请求总延时是 30 + 300 + 450 + 200 = 980ms,接近 1s,异步后,BCD 三个系统分别写