消息队列是个啥 ?
Posted Java后端
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了消息队列是个啥 ?相关的知识,希望对你有一定的参考价值。
作者 | ithuangqing
来源 | 编码之外(ID:ithuangqing)
今天,我们一起来看看,消息队列是个啥?
消息队列是否了解?
消息队列初步来看,是由“消息”和“队列”组成,英文叫做:Message Queue,一般这些玩意都会根据英文名称来个简称,而简称一般就是英文名字的首字母缩写,所以消息队列即MQ。
可能你对消息队列有点陌生,但是你一定听过消息队列四个字,而且还会听过或者在其他地方见过比如RabbitMQ,还有RocketMQ,如果这些你都没听过,那你一定听过Kafka吧,这些知识可能在你那里都是高大上的概念,自己觉得目前还学不来这些知识……
所以,我觉得应该有相当一部分只是听过这些名字,但是仅仅而已,再多一点的信息可能就不知道了,那么从现在开始,跟随庆哥,一起来学习消息队列吧,同样的,庆哥会用大白话给你讲解这些晦涩难懂的概念与技术。
中间件是否了解
其实消息队列属于一种中间件,这个中间件,我想大部分应该也听过,但是也不太清楚是个什么玩意,其实吧,在编程世界里啊,很多解决不了的问题,都可以加个中间件来搞定,中间件,名字已经很直白了,就是相当于一个桥梁,比如A与B有直接关系,但是现在A和B之间引入了一个c,那么c就可以看做一个中间件,A和B依然可以通信,只不过不是直接通信,要借助c来实现了,画个图,简单的就是这样:
而消息队列就是属于一种中间件,充当了一个桥梁作用, 相当于在原有的基础之上强塞了一个玩意过去,以后原有的需要做些什么,可能就要经过这个新来的中间件了。
消息队列到底是个啥?
那消息队列有啥用嘞?以上,我们知道了消息队列是个中间件,哪还有啥嘞?就知道个中间件也不起作用啊,还是对消息队列一脸懵逼吧,想要搞定消息队列是个啥?我们得从字面意思上去拆解,首先,什么是消息你知道吗?
消息这个不多说, 属于不言而喻的东西,那么啥是队列,这个可能就有人不清楚了,不过不用担心,我之前特意写过一篇讲解队列的文章,你可以去看看:轻轻松松学会栈和队列(附有顺序栈的实现思路分析)
加入你已经看了这篇文章了,也许现在你已经知道了啥是队列,我相信,你知道的依旧是个概念,也就是队列的那些特点啥的,比如是个数据结构啊,什么先进先出啊,有什么队头和队尾之嘞的。
这些都是概念性的问题,如果你是第一次接触队列的话,我相信,你内心还是迷茫的,这都是啥啊,你可能会问。
其实吧,队列是属于一种数据结构,数据结构这玩意刚开始学习很玄学,不知道所以然,数据结构其实就是在告诉你,数据该怎么进行存储,按照一些特定的规则以及方式去储存数据,简单来说这就是数据结构在做的事情。
就拿数组来说,如果你需要用数组的话,那么实际上就是取内存申请了一段连续的内存空间,这个连续就是一个特点,要求你这些数据必须连续存储在这些内存中……
队列其实也是一样,说到底,就是告诉你怎么在内存中存储数据,记住这个先,那消息队列,也是这样,很直白的按照字面意思理解,就是存储消息的队列,所以啊,消息队列就是用来存储信息,然后其他可以从它这获取信息。
所以记住,消息队列:消息收发,通信
这么一看,消息队列好像就起到了一个通信的作用?当然不是,通信只是一部分,它所起到的作用绝对不仅仅如此。
我上面说了这么多,其实就是在跟你掰扯,消息队列是啥?不知道你清楚了没有,如果别人问你,知道消息队列吗?你必须回答,知道啊,消息队列,是一种中间件,进行消息的收发,可以解决一些通信问题……
当然,你这样回答远远不够,你还必须知道以下这些关于消息队列的知识。
有哪些消息队列
首先你得知道,消息队列MQ是一个统称,具体的有不同的产品,啥意思咧,就比如说水果,那还包括香蕉和苹果嘞,所以,消息队列有好几种嘞,我这里说几种当下比较流行的,其实也就三种:
-
RabbitMQ -
RocketMQ -
Kafka
RabbitMQ
-
开箱即用 -
轻量级 -
易于部署和使用 -
支持灵活的路由配置 -
客户端支持的编程语言是最多的(至少目前是) -
……
-
使用Erlang语言编写(这是个啥语言我之前真不知道,这就导致一个大问题,想要二次开发与扩展,以及遇到问题的话,解决的成本都比较高啊) -
对消息堆积支持的不友好(消息队列就是进行消息收发的啊,大量的消息扔进RabbitMQ的话,它的性能表现就不那么好了) -
性能相比较RocketMQ和Kafka是最差的
RocketMQ
-
用java语言开发,好处多多啊 -
响应时延这块优化的很好(就是响应时间优化的很短) -
性能优越,比兔子MQ好
以上是关于消息队列是个啥 ?的主要内容,如果未能解决你的问题,请参考以下文章