面试Java高级工程师之RocketMQ总结

ActiveMQ、RabbitMQ、Kafka、RocketMQ在事务性消息、性能、高可用和容错、定时消息、负载均衡、刷盘策略的区别 ActiveMQ、RabbitMQ、Kafka、RocketMQ这四种消息队列在事务性消息、性能、高可用和容错、定时消息、负载均衡、刷盘策略等方面各有其特点和差异。 阅读详情

一、rocketmq是什么?为什么要用?

1、消息中间件,具有高性能、低延迟和高可靠特性

2、主要用来系统解耦、流量削锋、异步处理以提升系统性能

二、使用rocketmq有哪些缺点?

1、系统可用性降低

2、系统复杂度提高

3、事务一致性问题

三、rocketmq和kafka有什么区别?

1、单机吞吐量:两个都是10万级别,高吞吐量

2、topic数量看吞吐量:rocketmq达到几百几千吞吐量会有较小幅度下降,kafka几十到几百会大幅下降

2、时效性:rocketmq毫秒级别,kafka毫秒以内

3、可靠性:都可以做到消息零丢失

4、可用性:都是高可用,分布式架构

四、rocketmq部署架构是怎么样的?

分为四大块:nameserver集群、producer集群、consumer集群、broker集群

NameServer是一个路由的角色,生产消费者会通过nameserver查找topic相应的borker ip列表进行发送消费消息

broker是一个消息中转角色,负责存储消息,转发消息。定期向nameserver发送心跳包,轮询注册元数据(borker的ip端口、broder集群、topic地址等信息)

producer负责生产消息,将消息发送到broker服务器。可以是同步、异步、顺序、单向发送。同步和异步需要broker返回确认

consumer负责消费消息,从broker服务器拉取消息。可以是拉取式消费和推动式消费

五、rocketmq有哪几种部署模式?优缺点是什么?

1、单master

只有一个broker,如果broker挂了就会导致mq不可用

2、多master

集群模式,如果其中一个master挂了不影响mq继续提供服务,性能也最高,但如果master挂了必须要等恢复后才能继续消费消息

3、多master多slave 异步复制

集群模式,主要是弥补了多master集群下没有slave,master挂了不能继续订阅的问题,优点是低延迟高吞吐,缺点就是Master宕机,磁盘损坏的情况会导致消息丢失

4、多master多slave 同步双写

集群模式,和多master多slave模式你一样,唯一不同的是只有master和slave都写成功后,才向客户端返回成功,优点当master宕机后消息无延迟,服务高可用和数据可用性非常高,缺点就是降低消息写入效率,影响系统吞吐量

六、rocketmq的工作流程是怎样的?

1、启动namesever

2、启动broker

3、创建topic

4、producer发送消息

5、consumer消费消息

七、RocketMq有哪些方式消费消息?

1、rocketmq提供两种方式,pull和push

2、push本质还是使用pull方式实现,通过consumer轮询从broker拉取消息,只不过在push方式里,consumer把轮询过程封装了一层,并注册了messageListener监听器。当轮询获取消息后就会通知messageListener的consumerMessage()来消费。

八、RocketMq如何实现负载均衡?

1、producer生产者端负载均衡是默认轮询向topic的所有queue发送消息,来达到消息平均落到不同队列上

2、consumer消费者负载均衡则是假设5个队列,2个消费者,则第一个消费者消费3个队列,第二个则消费2个队列,以达到平均消费的效果。但要注意的是,当consumer数量大于队列的数量时,多余的consumer不会去消费队列,会浪费资源,建议配置等于小于队列的consumer消费者,避免浪费

九、RocketMq的存储机制是怎么实现的?

采用文件的方式存储,在写消息和发送消息使用顺序写和零拷贝模式,保证了rocketmq高性能

顺序写:直接追加数据到末尾

零拷贝:读取文件,再用socket发送出去

十、RocketMq的存储结构是怎样的?

1、使用commitlog来存储消息,并分别提供了consumerQueue和indexFile两个索引,来快速检索消息

十一、RocketMq如何进行消息去重?

1、消费端业务处理保持幂等性

2、建立日志表,使用消息主键作为表主键,处理消息前先insert

十二、怎么解决消息丢失问题?

1、生产者采用事务消息机制

发生half消息到mq

mq回复half消息

执行本地事务下单

通知mq本地事务状态

mq未确定事务状态进行回查

检查本地事务状态

返回mq本地事务检查状态

2、Broker配置同步刷盘+Dledger主从架构

配置mq队列flushDiskType同步刷盘

Dledger文件同步,通过二阶段提交来保证主从同步,Leader收到数据后标记为uncommit,在发送数据到Follower,Follower收到数据后回复ack,当大部分Follower回复ack后Leader会标记为commit,最后发送标记commit到Follower完成两阶段数据同步

3、消费者不要使用异步消费

4、整个mq挂了使用降级方案

临时写入redis或文件

开启定时任务扫描redis

尝试推送数据到mq,直到mq恢复正常

十三、怎么保证MQ消息顺序消费?

1、mq分为局部有序和全局有序

2、发送者发送消息时会通过messageQueue轮询方式尽量均匀的发送到不同消息队列

3、局部有序:通过在发送消息时指定MessageSelector对象,把有序的一组消息发送到同一个队列,利用messageQueue天生的FIFO先进先出来保证顺序消费

4、全局有序:将topic配置成一个messageQueue队列(默认4个)来保证全局有序

十四、怎么快速处理mq积压的消息?

生产消费者配置不平衡、消费者挂了、网络波动等场景出现消息积压情况

1、增加Consumer节点个数

2、创建一个新的Topic,负责消费旧Topic中的消息

3、官网特殊情况,从普通主从架构模式切换到Dledger高可用集群时避免消息丢失需要先消费完消息,因为Dledger集群会接管原mq集群commitlog日志,所以这种场景也需要尽快处理积压消息

十五、怎么配置mq消息轨迹?

broker.conf设置traceTopicEnable=true

参考:

RocketMQ 常见面试问题_柚子茶1990的博客-优快云博客_rocketmq面试

RocketMQ常见面试题_ayu_programer的博客-优快云博客_rocketmq面试

RocketMQ在面试中那些常见问题及答案+汇总-阿里云开发者社区

Java高级工程师面试:分布式系统与内容社区架构实战 分布式系统是现代互联网架构的核心,通过将计算任务分散到多个节点实现高可用与高性能。其关键技术包括微服务拆分、缓存策略和消息队列等,尤其在内容社区平台中,需要应对热点内容爆发和实时互动的挑战。Java生态体系中的JVM调优和并发控制是保障系统稳定性的基础,例如通过G1回收器优化GC时间,或使用Redis原子操作解决计数并发问题。典型应用场景如千万级Feed流系统设计,需结合推拉模式与多级缓存策略。本文通过某内容社区平台面试案例,详解了分布式事务、时序一致性等实战方案,并探讨了LLM等新兴技术在内容生成中的应用 阅读详情

相关推荐

Java面试宝典:从基础到架构20

系统设计六步法: 需求分析→容量估算→架构设计→数据模型→技术选型→深入设计短链系统: 自增ID + Base62,Redis缓存秒杀系统: 限流→预减库存→异步下单→乐观锁防超卖Feed流: 推模式/拉模式/推拉结合分布式锁: 数据库/Redis/ZooKeeper抢红包: 二倍均值法,Redis List原子弹出延时任务: Redis ZSet/RocketMQ延迟消息IM系统: 长连接 + ACK + 消息存储。

_abab的专栏 174

【RocketMQ】MQ与RocketMQ介绍

本文介绍了消息队列(MQ)的基本概念及其在分布式系统中的作用,包括实现异步通信、削峰限流和应用解耦等方面的优势,并对ActiveMQ、RabbitMQ、RocketMQ及Kafka四种MQ产品进行了对比分析,涵盖了它们的开发语言、吞吐量、时效性和可用性等特点。此外,文章还特别介绍了RocketMQ,包括其架构设计、高可用性实现方式以及消费模式等内容,突出了RocketMQ在消息顺序消费、拉取模式、扩展性等方面的优势。

我只管埋头前行,剩下的交给时间。 1555

Java高级工程师进阶学习:java程序员学习路线

part 1Java基础核心技术总结 万事都离不开根基,Java基础对于一些老鸟来说可能已经很熟悉了,但是对于很多开发5年以下的朋友掌握的或许不是很牢固,因此这份笔记更适合温故而知新。 Part 2并发编程(架构师筑基必备) 并发编程都掌握不好,你凭什么写出优质的代码? 大厂必问并发编程技术栈,都在这张图上了: Part 3JVM(架构师筑基必备) JVM和并发编程都是Java语言中非常重要的技术点,同时也是带有一定难度的基础内容,在面试过程中JVM也是常问的面试内容。 P8大佬自编笔记—

m0_57286679的博客 1158

active mq topic消费后删除_手把手教你用redis实现一个简单的mq消息队列

众所周知,消息队列是应用系统中重要的组件,主要解决应用解耦,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。目前使用较多的消息队列有 ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ.但是如果你不想为你的系统引入一个重量级(相对 redis 来说)的 mq,但是想要享受解耦、异步消息等特性,通过本文你就 get 到了,通过 redi...

weixin_39984982的博客 391

java高级工程师BAT面试题

1)Spring Boot中的Starter 答:Starter组件是SpringBoot中四大核心功能特性之一,除此之外Spring Boot里面还有自动装配,以及Actuator监控等这样一些特性。SpringBoot都是为了让开发者在开发基于Spring生态下的企业级应用的时候,只需要关注业务逻辑,减少对配置和外部环境的依赖。其中Starter组件作用有几个,第一是以功能为维度,来维护对应jar包的版本依赖的,那么开发者就不需要关心这些2)如何区分Spring事务和分布式事务的使用以及两个事务之间的关

ZhiguoXue_IT的博客 175

CAN收发器TJA1145A休眠唤醒应用

TJA1145的唤醒工作原理主要依赖于其内部的唤醒机制和外部硬件的配合,主要涉及低功耗状态、选择性唤醒功能。TJA1145是一款CAN收发器,它支持多种工作模式,包括NormalStandbySleep等。在这些模式中,Sleep模式是最低功耗状态,而Normal模式则是最活跃的状态,其中Standby模式处于两者之间,允许一定的功能操作但功耗较低。TJA1145可以通过接收特定的唤醒源从Sleep或Standby模式唤醒到Standby或Normal模式。唤醒源的检测与处理。

radix关于mcu的博客,持续更新中... 5957

RocketMQ消费者是如何获取消息的?转疯了!

第1章:Dubbo的简史、后续的规划和整体架构大图 ————Dubbo高性能RPC通信框架 1.1应用架构演进过程 1.2 Dubbo 简介 1.3 Dubbo总体大图 第2章:Dubbo的环境配置和基于Dubbo开发第一款应用程序 ————开发第一款Dubbo 应用程序 2.1配置开发环境 2.2基于XML配置实现 2.3基于注解实现 2.4基于API实现 2.5构建并运行 第3章:Dubbo内置的常用注册中心的实现原理 ————Dubbo注册中心 3.1注册中心概述 3.2订阅/发布

m0_57081140的博客 322

无人机芯片模块技术要点分析

恶劣环境下信号稳定性:无人机在恶劣环境下工作时,遥感系统采集的信号往往很不稳定,视频信号处理芯片需要具备强抗干扰能力,能辨别脉冲脉宽为50ns以上、幅度为0V~4.5V的输入信号。这种架构能兼顾强大的运算能力和灵活的接口控制。芯片小型化:麻省理工学院的研究人员已设计出仅20平方毫米的微型芯片,可处理无人机飞行所需的惯性数据和相机图像,为微型无人机的发展奠定了基础。光子集成芯片(PIC) :研究显示,与电子芯片相比,光子计算芯片在延迟、计算容量和能效上都有数量级的提升,有望解决当前无人机系统的计算瓶颈。

YUNZHUO666的博客 1407

java mq如何获取结果_深入研究RocketMQ消费者是如何获取消息的

前言小伙伴们,国庆都过的开心吗?国庆后的第一个工作日是不是很多小伙伴还沉浸在假期的心情中,没有工作状态呢?那王子今天和大家聊一聊RocketMQ的消费者是如何获取消息的,通过学习知识来找回状态吧。废话不多说,我们开始吧。消费者组首先我们了解一个概念,什么是消费者组。消费者组你就可以把它理解为,给一组消费者起一个名字。假设我们有一个订单Topic名字是OrderTopic,然后库存系统和积分系统都要...

weixin_32280985的博客 1346

基于PTB-XL数据集的深度学习心电信号分类

心电信号的分析与处理是心血管疾病诊断的重要手段。该领域的主要工作领域是分类,它越来越多地得到基于机器学习的算法的支持。在这项工作中,开发了一个深度神经网络来自动分类初级心电信号。这项研究是在PTB-XL数据库中包含的数据上进行的。提出了三种神经网络架构:第一种基于卷积网络,第二种基于SincNet,第三种基于卷积网络,

weixin_55121617的博客 7008

智能驾驶小白必看:MEB低速紧急制动系统的工作原理与传感器配置详解

本文深入解析了MEB低速紧急制动系统的工作原理与传感器配置。该系统作为智能驾驶的关键安全冗余,专为应对停车场、拥堵路段等复杂低速场景设计。文章详细拆解了其如何通过超声波雷达、环视摄像头等传感器融合感知环境,并基于碰撞时间(TTC)等模型进行风险评估与分级制动,最终实现主动防碰撞,是智能驾驶技术实用化的重要体现。

c2d3e4f的博客 1132

面试现场模拟题 要站起来,RocketMQ 5,java高级工程师面试宝典

其他的内容都可以按照路线图里面整理出来的知识点逐一去熟悉,学习,消化,不建议你去看书学习,最好是多看一些视频,把不懂地方反复看,学习了一节视频内容第二天一定要去复习,并总结成思维导图,形成树状知识网络结构,方便日后复习。这里还有一份很不错的《Java基础核心总结笔记》,特意跟大家分享出来目录:部分内容截图:一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

2401_83977554的博客 899

zds1104示波器使用指南

(2)将探头连接到探头补偿端,按下auto setup按键,一键捕获。(3)连接需要测量信号,开始查看波形。操作说明书,可以自行查看操作说明书。

m0_61973119的博客 6777

Java面试实录:Kafka与RocketMQ技术栈深度解析

面试官对候选人的表现非常满意,称赞其技术深度和实际经验丰富,能够灵活应对各种业务场景。本次面试通过多轮渐进式提问,深入探讨了Kafka和RocketMQ的核心技术点及其在实际业务中的应用。候选人的表现展现了其深厚的技术功底和丰富的实战经验,是一场高质量的面试。

南客先生的博客 535

Miniconda3迁移(附图详细过程)

服务器上目录占满,想要将conda迁移到其他目录下的操作方法,详细教程。

2301_77554343的博客 6947

Python爬虫实战:模拟登录B站 – 处理Cookie和加密参数

由于B站在登录过程中采用了多种安全措施,包括加密的请求参数和cookie验证,模拟登录成为一项具有挑战性的任务。首先,我们需要获取B站的登录页面,并解析出其中的CSRF令牌和其他隐藏的字段。B站的登录接口通常会包含一些动态的加密参数,我们需要在登录前通过GET请求获取这些信息。本文详细介绍了如何使用Python模拟登录B站,解决加密参数的处理、图形验证码的识别以及登录后的数据抓取。库中的加密方法加密登录请求中的密码。一旦登录成功,我们可以通过维护会话状态,抓取登录后的数据,如个人主页、评论、观看记录等。

2201_76125261的博客 1310

Java技术专家成长路线总结(思维导图)

最近很多读者朋友问慕枫如何能够进行Java入门学习以及构建自己的技术体系,总感觉Java技术知识浩如烟海,网上资料又多如牛毛,根本不知道应该从哪里入手进行学习,另外觉得自己学习的内容零零碎碎不成体系,感觉十分的迷茫。为了解答大家的疑惑,慕枫特意梳理了Java小白到技术专家成长过程中必备的技术体系(这次可是拿出来压箱底的技术总结思维导图)。希望这份技术成长路线总结可以对大家在学习Java的过程中有所帮助,在学习上可以做到有的放矢。

3890

23、电生理与CSD分析:探索大脑活动的前沿技术

本文介绍了电生理与电流源密度(CSD)分析在探索大脑活动中的前沿应用。从电生理技术的发展现状,到局部场电位(LFPs)的起源与解释,重点阐述了CSD分析的原理、实验方法及其在绘制皮层兴奋流、解析突触输入和研究自发振荡中的广泛应用。文章还总结了该领域的优势与挑战,并展望了技术改进、多模态融合、数据分析创新及临床拓展的未来方向,展示了这些技术在揭示大脑功能机制中的关键作用。

Apple的专栏 123

60题Java高级工程师面试高频题:JVM+Redis+并发+算法+框架含答案!

60题Java高级工程师面试高频题:JVM+Redis+并发+算法+框架含答案! 面试,也是一种学习方式面试,不仅仅是面试,还是一次对自己技术知识栈的梳理、考核、复盘。 如果你参加了很多公司的面试,但却都没有拿到offer,又或者拿到offer的概率特别低,原因很简单,你可能在技术知识点上有漏洞。 经过一轮认真复习之后,你会发现自己的技术知识栈越来越充实,这时候再去挑战好offer,成功概率无疑会增大很多。当有机会参与心仪公司或BAT大厂面试时,你至少能够游刃有余回答大部分问题~ 分享一个,有很多干货,包含

a646705816的博客 5122

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Java面试实录:分布式缓存与消息队列技术栈深度解析

本次面试通过多轮渐进式提问,深入探讨了分布式缓存和消息队列的核心技术点及其在实际业务中的应用。候选人的表现展现了其深厚的技术功底和丰富的实战经验,面试官对候选人的表现非常满意,称赞其技术深度和实际经验丰富,能够灵活应对各种业务场景。

南客先生的博客 429

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

高质量Java面试题集锦:高级Java工程师面试八股汇总

谈到 Java 面试,相信大家第一时间脑子里想到的词肯定是金三银四,金九银十。好像大家的潜意识里做 Java 开发的都得在这个时候才能出去面试,跳槽成功率才高!但 LZ 不这么认为,LZ 觉得我们做技术的一生中会遇到很多大大小小的面试,金三银四(金九银十)只是机会比平时多一些,但也未必每个人都能在这个时间段找到自己理想的岗位。我们能做的就是时刻准备着,当机会来临的时候能把握住就行。

sjkflw121150的博客 223

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Java高级工程师面试实战:微服务与分布式系统深度解析

微服务架构和分布式系统是现代Java后端开发的核心技术领域,其核心原理是通过服务拆分和解耦提升系统扩展性和可维护性。在分布式环境下,关键技术挑战包括服务治理、数据一致性保证和系统容错处理。工程实践中,Spring Cloud、Dubbo等框架提供了标准化的解决方案,而分布式锁、ID生成器等基础组件直接影响系统稳定性。以电商优惠券系统为例,需要结合消息队列和缓存技术实现高并发场景下的数据一致性。本文通过真实面试案例,详解微服务拆分策略、RocketMQ/Kafka技术选型对比等实战经验,为开发者提供从原理到落

weixin_29879257的博客 325

Java大厂面试实战:微服务、缓存、消息队列与AI集成

微服务架构和分布式系统是现代Java后端开发的核心技术领域,涉及服务拆分、通信协议、分布式事务等关键概念。其技术价值在于通过解耦和水平扩展提升系统弹性,在电商、金融等高并发场景广泛应用。缓存技术作为性能加速器,通过Redis等中间件实现数据高速访问,需要设计防击穿、雪崩的多层策略。消息队列如Kafka和RocketMQ解决系统解耦和流量削峰问题,在物联网、订单处理等场景表现突出。本文通过大厂面试真题,深入探讨了缓存一致性方案对比、消息队列选型考量等工程实践,并延伸至AI Agent与传统Java系统的融合挑

weixin_33423874的博客 305

牛客网Java面试题汇总(2026秋招最新版,附答案·持续更新)

前三者 LZ 将淋漓尽致地挥毫于这篇文章中,至于总结在于个人,实际上越到后面你会发现面试并不难,其次就是在刷题的过程中有没有去思考,刷题只是次之,这又是一个层次了,这里暂时不提后面再谈。现在大厂内卷现象泛滥,而且 996 的传统依旧肆虐。但没有哪位程序员能架得住互联网大厂的高薪职位诱惑。特别是我还有一位在阿里工作 7 年多的老表,在其耳旁风之下,不断将大厂描绘的美丽风景刻画在我脑海中,也让我一直有着想进大厂镀金的梦想。

sjkflw121150的博客 239

2026 Java 中高级面试题全集(100 题附详细答案)

`@SpringBootApplication` 包含 `@EnableAutoConfiguration`,通过 `AutoConfigurationImportSelector` 读取 `META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports`(Spring Boot 3.0 后替代 `spring.factories`)加载配置类。若冲突,遍历链表/树,`equals` 判断覆盖,否则插入;

weixin_63835553的博客 710

Java高级工程师每日面试题精选,java技术面试题目

分享一套我整理的面试干货,这份文档结合了我多年的面试官经验,站在面试官的角度来告诉你,面试官提的那些问题他最想听到你给他的回答是什么,分享出来帮助那些对前途感到迷茫的朋友。

D1561691的博客 304
上一篇: 面试Java高级工程师之应用框架总结
下一篇: 面试Java高级工程师之Redis总结
Code Space
博客等级 码龄14年 8粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值