面试官非得跟我抬杠,说MQ挂了怎么办?

2024-05-24 14:18
文章标签 面试官 mq 非得 抬杠

本文主要是介绍面试官非得跟我抬杠,说MQ挂了怎么办?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原创:猿天地(微信公众号ID:cxytiandi),欢迎分享,转载请保留出处。

一位读者跟我说,最近去某个公司面试,面试官非得问他MQ挂了如何处理?这位读者说当时也比较懵,因为在日常工作中也没去想过这样的问题,就回答:挂了报错了呗**,**马上重启呗,还能咋处理

其实这个问题也并不是说这位面试官是一种抬杠的行为,因为MQ确实有可能挂掉,是一种正常现象。只不过是说这个挂的概率非常小,毕竟都是集群模式。

如果是平时跟朋友,同事聊这个问题,怎么回答都没问题。如果是在面试过程中,还是得仔细想想如何去回答比较好,不能太随意,否则面试结果可能没那么理想了。

第一步:统一封装MQ的操作

如果MQ挂掉,势必会影响你发消息的逻辑。我们可以仔细思考下这个问题,MQ不像数据库,挂了就没办法进行任何操作了。MQ本身就是用于多系统解耦,异步处理等场景的,就算MQ挂了,也不会影响到主流程。所以这其实就相当于是一个降级的处理,没什么特殊的点。

要进行降级处理,那么肯定得统一进行处理。不太可能每个发送消息的地方都去处理一遍,只有逗比才会去这样做。所以第一步就需要先对MQ的操作进行统一封装,然后在这个封装里面去做统一的降级逻辑,不要让使用方去关注你的这个降级逻辑。

第二步:降级处理,数据存储

降级可以有两种方式,一种是将要发送的消息存储到数据库中,另一种就是直接写本地磁盘。

写数据库

写数据库相对来说比较简单,本身程序中都会用到数据库,这个时候只需要单独加一张表即可。当消息发送异常的时候,将消息进行存储。

写磁盘

写磁盘跟数据库的作用是一样,写磁盘相对来说更加独立,不依赖数据库。不好的点在于写磁盘还得考虑写入的格式,比如消息量大要不要分多个文件写入之类的问题,整体需要考虑的点比数据库要多。

写日志

写日志可能是最简单的方式了,但是在后期消息补发的时候就需要人工介入,将失败的消息捞出来然后重新发送。

第三步:重发消息

可以单独起一个定时任务,周期性的去将这些失败存储的消息进行重发,如果你的MQ服务故障后几分钟就恢复了,那么重试的时候消息就能够成功发出去了。

也可以人工处理,最重要的是当MQ故障的时候,消息发送不出去,这些消息存储起来,不能丢失,这才是重点。

完整流程如下:

在这里插入图片描述

总结

本文只是给大家提供一些思路,实际上对任何中间件的依赖都需要考虑异常情况,如何回退。当然还有最重要的就是监控,在故障后及时发现问题,快速修复。然后再加上兜底的回退逻辑将发送失败的消息重新发送,保证业务的完整性。

思路比编码更重要,如果对你有用,来个转发呗!

关于作者:尹吉欢,简单的技术爱好者,《Spring Cloud微服务-全栈技术与案例解析》, 《Spring Cloud微服务 入门 实战与进阶》作者, 公众号 猿天地 发起人。

这篇关于面试官非得跟我抬杠,说MQ挂了怎么办?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/998645

相关文章

【吊打面试官系列-Redis面试题】说说 Redis 哈希槽的概念?

大家好,我是锋哥。今天分享关于 【说说 Redis 哈希槽的概念?】面试题,希望对大家有帮助; 说说 Redis 哈希槽的概念? Redis 集群没有使用一致性 hash,而是引入了哈希槽的概念,Redis 集群有 16384 个哈希槽,每个 key 通过 CRC16 校验后对 16384 取模来决定放置哪个槽, 集群的每个节点负责一部分 hash 槽。

面试官:synchronized的锁升级过程是怎样的?

大家好,我是大明哥,一个专注「死磕 Java」系列创作的硬核程序员。 回答 在 JDK 1.6之前,synchronized 是一个重量级、效率比较低下的锁,但是在JDK 1.6后,JVM 为了提高锁的获取与释放效,,对 synchronized 进行了优化,引入了偏向锁和轻量级锁,至此,锁的状态有四种,级别由低到高依次为:无锁、偏向锁、轻量级锁、重量级锁。 锁升级就是无锁 —>

【Unity面经】实习篇:面试官常问的一百个面试题

👨‍💻个人主页:@元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 专栏交流🧧🟥Unity100个实战基础✨🎁🟦 Unity100个精华一记✨🎁🟩 Unity50个demo案例教程✨🎁🟨 Unity100个精华细节BUG✨🎁🟨 Unity100个面试题✨🎁 文章

作为面试官的一点点感悟,谈谈技术人的成长之路

因为工作上的原因,做过几次面试官,面试的同学有应届生,也有工作3-5年的老技术人。最近也频繁作为面试官帮助筛选候选人,中间有很多值得深思的东西,我记录了下来分享给大家。 以下观点仅为个人观点,不代表任何公司的立场。        01 面试不是简单的你问我答 一般来讲,作为面试官和候选人进行沟通的第一个问题是一般是自我介绍,整个自我介绍的情况应该控制在2分钟左右,阐述自己的教育背景,项目经历

【对线面试官】阿里面试经历,有些人走一步看一步就挂了

点击上方蓝色字体,选择“设为星标” 回复”资源“获取更多资源 这个其实说来就话长了。是小编曾经面试阿里妈妈的经历。 这次面试最终在HR面挂掉,以至于后面回忆起来,仍然是一桩美谈。 这次面试长达一个月之久,共经历了4轮技术面,1轮HR。前四轮面试过关斩将,简直开了挂一般,跟面试官正面对线,丝毫不虚。听我一一道来。 第一轮 第一面是电话面试,晚上10点半。我特么一脸问号?你们这是刚加完班吧?事实上我

【大数据哔哔集20210122】面试官问我HDFS丢不丢数据?我啪就把这个文章甩到他脸上

数据一致性 HDFS作为分布式文件系统在分布式环境下如何保证数据一致性。HDFS中,存储的文件将会被分成若干的大小一致的block分布式地存储在不同的机器上,需要NameNode节点来对这些数据进行管理,存储这些block的结点称为DataNode,NameNode是用来管理这些元数据的。 NameNode保证元数据的一致性 客户端上传文件时,NameNode首先往edits log文件

几乎每一位面试官都会关注的能力,你做到了吗?

又到了金九银十招聘季,虽然说大环境不好,但对于不少想要挪窝的同学来说,这个时间段还是一个不错的窗口期。 我也借此机会在Boss上看了不少岗位,发现很多岗位JD都有一条关于“功能设计规范”的要求。 相比较于设计岗的设计规范原则,产品岗的设计规范会要求你对业务、产品有更强的纵深性,但这种基础且重要的能力被太多人忽视了。 因此,我列举了以下11点产品设计规范,同学们可以自查一下看看日常有没有做到

详解 MQ 消息队列

谈起消息队列,内心还是会有些波澜。 消息队列,缓存,分库分表是高并发解决方案三剑客,而消息队列是我最喜欢,也是思考最多的技术。 我想按照下面的四个阶段分享我与消息队列的故事,同时也是对我技术成长经历的回顾。 初识:ActiveMQ 进阶:Redis&RabbitMQ 升华:MetaQ 钟情:RocketMQ 1 初识ActiveMQ 1.1 异步&解耦 2011年初,我在一家

魔鬼面试官:用户在电商网站中购买成功了,那么它在微服务中经历了什么?...

点击上方“朱小厮的博客”,选择“设为星标” 做积极的人,而不是积极废人 面试的时候,面试官问:用户在电商网站中购买成功了,那么它在微服务中经历了什么?你该如何作答?  当我傻啊,用户在电商网站购买成功,还在微服务中,那肯定就是有一套微服务架构的电商系统。 设计一套电商系统还不简单?简单想象一下,既然是一个电商系统,有用户去购买,就肯定得有一个用户模块,购买什么东西总不是西北风吧,购买肯定是

我在阿里做了10年技术面试官,这7个些建议能让你受益终身

我可能是在同龄人中做面试官经验比较丰富的,在某乎实习的时候就参与了Java的技术面试。后来在阿里以及另一家公司也面试过不少候选人,校招、社招、外包都有面试过。这里以一个面试官的角度来给大家谈谈在面试的时候怎么能给面试官留下更好的印象,更容易拿到大厂的Offer。为了不造成任何面试题泄露,这里我不会涉及到任何具体的面试题。 1、社招和校招的面试重点 社招其实和校招的面试重点有一些区别,以Java