当前位置: 首页 > 后端技术 > Java

面试官:什么是RocketMQ,有什么特点和使用场景?

时间:2023-04-01 16:09:46 Java

您好!大家好,我是小七,一个爱分享的程序员。小七打算在轻松幽默的对话中分享一些技术。如果你觉得通过小七的文章有所收获,那就给小七点赞吧。持续更新,可以微信搜索【小七JAVA专访】第一时间阅读,回复【资讯】我已经为你准备好了福利!回复【项目】有一些项目源码我给大家准备好了。一、前言作为一个Java程序员,RocketMQ的一些底层原理是一种不用学就可以搬砖干活的技能点,但是小七为什么还要讲呢?难道只是为了浪费大家宝贵的1分钟时间,一个人1分钟,50万人1年,5000万人100年。当然不是,而且小七的文章也没那么多人看,顶多浪费一个肾。学习RocketMQ底层原理是因为面试官要问!,所以我们要学习,什么?不实用就不学吗?邻居小七要努力学习,到时候面试官只想要小七,不要你。至于为什么让面试官问RocketMQ的底层原理,这个。..我把这个机会留给你。下次面试的时候,面试官会问:“说说RocketMQ的底层原理”。你:“面试官你好,请问你为什么要问RocketMQ的底层原理?给我一台电脑,我五分钟给你搭建一个图书管理系统,好不好?让我们看看真假键盘。”这时候面试官会告诉你答案,你可以在评论区打出答案,让小七和很多小伙伴知道你为什么要问?2.面试是在一个阳光明媚的星期天,来到一个陌生的公园(不要问为什么是星期天,是997,但是为了填饱农民工的肚子,只能去山里旅游了,知道山上有猛虎),坐在陌生的会议室里,等着HR小姐姐给面试官打电话,此时的心情和朋友们一样五味杂陈,生怕面试官的问题有难度?知识盲点怎么办?待会儿自我介绍的时候,你是不是要吹嘘我和小七的关系?进来一个帅气的面试官,眼神犀利,看着他那双仿佛能看透一切的锐利眼神,我在想,不然我一会不要20k,我要8k,这个面试官看不出来好迷茫,不过我想起来了,来之前刚刚看了小七的一个有趣的编程系列。完全领悟了小七的精髓。我顿时信心大增,决定暂时要30k。等一下(哈哈)面试官:小七,简历带来了吗?我:没带。现在彩印两块钱,我有五份简历。每次面谈十元。我的朋友说不要去一份要求你先付钱才能找到工作的工作。面试官:。..那你靠什么征服我,让我雇佣你我:气质?(这时候面试官没有叫保安,而是从门后拿出等我好久的棍子,我瞬间胆小了)只好从背包里拿出return早上问了其他公司的面试官。简历,上午的情况是这样的。早间面试官:今天的面试就这些,回去等通知吧!我:面试官你好,如果贵公司不打算招我,能不能把我的纸质简历还给我,我下午还有面试。上午面试官:我说你的简历有多皱,所以你一直在回收!这些症状出现多久了?我:半个月了。..(当我把皱巴巴的简历递给面试官的时候,面试才得以继续……)3、什么是RocketMQ面试官:我看你简历上写的是精通RocketMQ?(哼,面试官轻蔑一笑)我:本来不想写熟练度的,但是同行喜欢,逼着我写,也没什么不好。虽然还没有达到精通的地步,但也差不多是登峰造极了。面试官:呵呵,先说说RocketMQ是什么吧。我:RocketMQ是一个消息队列中间件,通过将消息放入队列,削峰填谷等效果实现解耦。面试官:那么RocketMQ的消息模型是什么样子的呢?我:RocketMQ主要由三部分组成,分别是消息生产者、消息存储代理、消息消费者。面试官:那么RocketMQ有哪些消息发送方式呢?1.基本模式在基本模式中,我们的生产者可以通过三种不同的方式发送消息,即同步发送、异步发送和单向发送。其中,同步发送需要接收端对当前消息进行响应后才能再次发送消息。单向传输无需等待接收端响应接收消息即可再次发送。另外,consumer消费消息有两种模式。一种是消费者主动去broker拉取消息的pull模式,另一种是消费者等待broker推送消息的push模式。2、顺序消息发送模式顺序模式是为了保证消息发送给Broker的顺序和消费者从Broker消费的顺序是有序的,所以如果只有一个Broker的话,一定是顺序的,而如果有多个Broker,则无法保证有序性,所以RocketMQ保证消息的局部有序性,不保证全局有序性。3、广播消息发送方式对于多个消费者来说,广播消息发送方式并不是说一个消费者消费一条消息,这条消息就没有了,而是每个消费者都会消费这条消息。就像我在村子里用喇叭广播张寡妇和王学士的事情一样。我只说了一次,全村人都听到了。这就是广播模式。如果不用广播,我就找到刘阿姨,把张寡妇和王学士的事告诉她,只有刘阿姨知道(当然刘阿姨知道了,一夜之间全村人都知道了)it))4.延时消息发送方式延时消息是指生产者发送消息后,消息没有及时发送出去,而是在一段时间后才发送出去。比如我上面跟刘阿姨说了一个八卦,要她不要传播,她肯定做不到。只能求她一个小时内不要传出去,只好预留一个小时让我八卦。逃跑了,刘阿姨说一个小时她受不了,最后协商只能忍五分钟,我就无话可说了。我可以在五分钟内跑完两英里,这总比没有时间好。还没来得及跑,就看到刘阿姨拦住了骑着大梁自行车回家做饭的老林。刘婶看了一眼手上的镀金小表,道:“再等我四分半钟,我告诉你一个秘密。”我坚信我们村不愧为人才村,人人都是人才。..5.批量消息发送方式批量消息发送是指将多条消息合并为一条消息,一次发送出去。这个好处可以减少网络IO的次数,提高效率。比如我在村子里八卦,遇到刘阿姨就说:哦,刘阿姨,你不知道。刘婶:“我真的不知道,你什么都没说。”我说:“就我们村的张寡妇,还真有可能。”刘婶:“张寡妇怎么了,她能干什么,是不是比我强……”。我说:“还有我们村的王先生,单身四十多年了,没想到有这个本事。”刘阿姨:“怎么了,不是小七,你能不能马上告诉我,我快憋死了,你告诉我怎么了。”我说:村东头那块玉米地里就他们两个。刘婶:“那又如何?”我说:我先回去吃饭了,吃完了再回来告诉你剩下的事情。刘婶:“你这王八蛋,你看,我能让你安安心心的吃吃吃,开胃,你这是找死。”明明我能解释清楚,我非要演一部60集的电视剧,冯导听了鼓掌。6、过滤消息发送方式在RocketMQ中,我们可以通过Message的Tag属性来过滤信息,即我们指定哪些消费者可以接收到这条消息,那么它可以接收到,其他的不能接收到。比如我在村里发现了八卦,总忍不住让全村的人都知道,我发到村里的微信群里就可以了,但是张寡妇和王学士也在微信群里,所以我我发帖的时候他们不知道是我吗?然后只好先拉黑了他们两个,然后发了消息,然后群里瞬间炸开了锅,只有他们两个不知道发生了什么。7、事务消息发送方式事务消息是分布式系统中保证最终一致性的两阶段提交消息实现。可以保证本地事务执行和消息发送的原子性。这里保证的是生产者发送的消息必须和生产者本地存储的消息一致。比如我们下单购买一个产品,我们简单描述一下流程。1.客户下订单。2、程序生成一个订单信息(此时还没有入库)3、此时给快递发消息,让快递为这个订单备货。4、此时将生成的订单信息放入订单服务的数据库是一个正常的流程,但是如果订单信息放入数据库时??失败了怎么办。此时快递消息已经发送到快递服务,但是订单服务入库失败。没有这个订单,就是浪费一个快递员。以后对不上账,领导就杀了你,心就归你了。这时候我们需要处理一个事务,我们可以进行两阶段提交来保证事务。采访者:年轻人很棒。我在这里没有什么要问的。你有任何问题吗?(面试官眼睛一亮)我:嗯。..面试官,我可以走了吗,一会儿我还有一个面试。面试官:你还想见见什么公司?就来找我吧,想开就开我:然后100k(这时候面试官又拿起了他准备的棒子)面试官:不来可以pay我推荐别人来找我面试:先把RocketMQ学好。幸运的是,今天只有我一个人在场。如果小七的忠实读者来了,你会被折磨的很惨。(给面试官留了博客地址,转身留下了帅气的背影,面试官坐在那里发呆,好像一个亿就这样离开了他。。。)四、这里关于RocketMQ的总结还没整理out了,文章后续会继续更新,建议收藏。文中涉及的命令必须像我一样多敲几次。只有在敲打的过程中,才能发现自己是否真正掌握了命令。如果觉得我的文章还不错,请点个赞。另外大家可以微信搜索【小七JAVA面试】阅读更多好文章,获取我为大家准备的资料。回复【项目】还有更多开源项目,持续更新分享给大家。