面试官问你什么是消息队列?把这篇甩给他!
一、什么是消息队列? 消息队列不知道大家看到这个词的时候,会不会觉得它是一个比较高端的技术,反正我是觉得它好像是挺牛逼的。 消息队列,一般我们会简称它为MQ(Message Queue),嗯,就是很直白的简写。 我们先不管消息(Message)这个词,来看看队列(Queue)。这一看,队列大家应该都熟悉吧。 队列是一种先进先出的数据结构。 在Java里边,已经实现了不少的队列了: 那为什么还需要消息队列(MQ)这种中间件呢???
消息队列可以简单理解为:把要传输的数据放在队列中。 图片来源:https://www.cloudamqp.com/blog/2014-12-03-what-is-message-queuing.html 科普:
二、为什么要用消息队列? 为什么要用消息队列,也就是在问:用了消息队列有什么好处。我们看看以下的场景 2.1 解耦 现在我有一个系统A,系统A可以产生一个userId 然后,现在有系统B和系统C都需要这个userId去做相关的操作 写成伪代码可能是这样的:
结构图如下: ok,一切平安无事度过了几个天。 某一天,系统B的负责人告诉系统A的负责人,现在系统B的SystemBNeed2do(String userId)这个接口不再使用了,让系统A别去调它了。 于是,系统A的负责人说"好的,那我就不调用你了。",于是就把调用系统B接口的代码给删掉了:
又过了几天,系统D的负责人接了个需求,也需要用到系统A的userId,于是就跑去跟系统A的负责人说:"老哥,我要用到你的userId,你调一下我的接口吧" 于是系统A说:"没问题的,这就搞" 然后,系统A的代码如下:
(编辑:ASP站长网) |