当前位置: 首页 > news >正文

RocketMQ学习笔记三(面试题)

【RocketMQ面试题(23道)】-CSDN博客

------------------------------------------------------------------------------------------------

最好的学习资源在官网:初识RocketMQ | RocketMQ (apache.org)

以下内容来源于官网哦。

基本概念

1. RocketMQ的基础消息模型

2. RocketMQ 扩展后的消息模型

3. 相同的ConsumerGroup下的消费者的负载均衡模式有哪些?

4. RocketMQ的部署模型

5. RocketMQ集群工作流程

生产者

在生产者一章的基本概念包括消息,Tag,Keys,队列和生产者的介绍。

1. RocketMQ 消息构成包括哪些?

  • topic,表示要发送的消息的主题。
  • body 表示消息的存储内容
  • properties 表示消息属性
  • transactionId 会在事务消息中使用。

2. Message 可以设置的属性值包括哪些?

3. 什么时候该用 Topic,什么时候该用 Tag?

4. 设置keys的好处?

5. 为什么引入了队列的概念?

为了支持高并发和水平扩展,需要对 Topic 进行分区,在 RocketMQ 中这被称为队列,一个 Topic 可能有多个队列,并且可能分布在不同的 Broker 上。(队列可以提升消息发送和消费的并发度)

6. 生产者

        生产者(Producer)就是消息的发送者,Apache RocketMQ 拥有丰富的消息类型,可以支持不同的应用场景,在不同的场景中,需要使用不同的消息进行发送。比如在电商交易中超时未支付关闭订单的场景,在订单创建时会发送一条延时消息。这条消息将会在 30 分钟以后投递给消费者,消费者收到此消息后需要判断对应的订单是否已完成支付。如支付未完成,则关闭订单。如已完成支付则忽略,此时就需要用到延迟消息;电商场景中,业务上要求同一订单的消息保持严格顺序,此时就要用到顺序消息。在日志处理场景中,可以接受的比较大的发送延迟,但对吞吐量的要求很高,希望每秒能处理百万条日志,此时可以使用批量消息。在银行扣款的场景中,要保持上游的扣款操作和下游的短信通知保持一致,此时就要使用事务消息,下一节将会介绍各种类型消息的发送。

        需要注意的是,生产环境中不同消息类型需要使用不同的主题,不要在同一个主题内使用多种消息类型,这样可以避免运维过程中的风险和错误。

相关文章:

  • 机器学习-04-分类算法-03KNN算法
  • docker修改配置文件后一直显示Restarting (1) 状态
  • STM32CubeProgrammer + STLINK V2 烧录
  • wrap:包装
  • C#版开源免费的Bouncy Castle密码库
  • SA3D:基于 NeRF 的三维场景分割方法
  • k8s+wordpress+zabbix+elastic+filebeat+kibana服务搭建以及测试
  • APK漏洞扫描工具
  • 高可用篇_A Docker容器化技术_V 基于DockerCompose实现容器编排
  • MyBatis拦截器四种类型和自定义拦截器的使用流程
  • 黑豹程序员-java按限定范围产生多个随机数
  • BUUCTF-----[SWPU2019]Web1
  • C# 协程的使用
  • DVWA靶场-暴力破解
  • 【Java EE】线程安全的集合类
  • AHK 中 = 和 == 等比较运算符的用法
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • canvas 绘制双线技巧
  • JavaScript 基础知识 - 入门篇(一)
  • JavaScript标准库系列——Math对象和Date对象(二)
  • Perseus-BERT——业内性能极致优化的BERT训练方案
  • PHP的Ev教程三(Periodic watcher)
  • vue-cli3搭建项目
  • web标准化(下)
  • windows下使用nginx调试简介
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 读懂package.json -- 依赖管理
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 全栈开发——Linux
  • 吐槽Javascript系列二:数组中的splice和slice方法
  • 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • Mac 上flink的安装与启动
  • ​卜东波研究员:高观点下的少儿计算思维
  • ​什么是bug?bug的源头在哪里?
  • ​一帧图像的Android之旅 :应用的首个绘制请求
  • #图像处理
  • $$$$GB2312-80区位编码表$$$$
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (译) 函数式 JS #1:简介
  • (转)Google的Objective-C编码规范
  • .net 7 上传文件踩坑
  • .NET Compact Framework 3.5 支持 WCF 的子集
  • .NET delegate 委托 、 Event 事件
  • .net 无限分类
  • .NET/C# 使用 SpanT 为字符串处理提升性能
  • .net中调用windows performance记录性能信息
  • .net中应用SQL缓存(实例使用)
  • .so文件(linux系统)
  • /var/lib/dpkg/lock 锁定问题
  • @data注解_SpringBoot 使用WebSocket打造在线聊天室(基于注解)
  • @param注解什么意思_9000字,通俗易懂的讲解下Java注解
  • @require_PUTNameError: name ‘require_PUT‘ is not defined 解决方法
  • @Tag和@Operation标签失效问题。SpringDoc 2.2.0(OpenApi 3)和Spring Boot 3.1.1集成
  • [100天算法】-x 的平方根(day 61)