RocketMQ消息查询

news2025/1/18 8:41:13

区别于消息消费:先尝后买

尝就是消息查询

买:消息的消费

RocketMQ支持按照下面两种维度("按照Message ld查询消息"、"按照Message Key查询消息")进行消息查询。

1按照Messageld查询消息

Msgld总共16字节,包含消息存储主机地址(ip/port),消息Commit Log offset。从Msgld中解析出Broker的地址和Commit Log的偏移地址,然后按照存储格式所在位置将消息buffer 解析成一个完整的消息。

在RocketMQ中具体做法是:Client端从Messageld中解析出Broker的地址(IP地址和端口)和Commit Log的偏移地址后封装成一个RPC请求后,通过Remoting通信层发送(业务请求码:VIEW_MESSAGE_BY_ID)。Broker使用QueryMessageProcessor,使用请求中的commitLog offset和size去commitLog中找到真正的记录并解析成一个完整的消息返回。

2按照Message Key查询消息

"按照Message Key查询消息",主要是基于RocketMQ的IndexFile索引文件来实现的。RocketMQ的索引文件逻辑结构,类似DK中HashMap的实现。

(1)根据查询的key的hashcode%slotNum得到具体的槽的位置(slotNum是一个索引文件里面包含的最大槽的数目)。

(2)根据slotValue (slot位置对应的值)查找到索引|项列表的最后一项(倒序排列,slotValue总是指向最新的一个索引项)。

(3)遍历索引项列表返回查询时间范围内的结果集(默认一次最大返回的 32条记录)

(4)Hash冲突

第一种,key的hash值不同但模数相同,此时查询的时候会再比较一次key的hash值(每个索引项保存了key的hash值),过滤掉hash值不相等的项。

第二种,hash值相等但key不等,出于性能的考虑冲突的检测放到客户端处理(key的原始值是存储在消息文件中的,避免对数据文件的解析),客户端比较一次消息体的key是否相同。

(5)存储:为了节省空间索引项中存储的时间是时间差值(存储时间-开始时间,开始时间存储在索引文件头中),整个索引文件是定长的,结构也是固定的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/944016.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[Mac软件]Adobe After Effects 2023 v23.5 中文苹果电脑版(支持M1)

After Effects是动画图形和视觉效果的行业标准。由运动设计师、平面设计师和视频编辑用于创建复杂的动画图形和视觉上吸引人的视频。 创建动画图形 使用预设样式为文本和图形添加动画效果,或逐帧调整它们。编辑、添加深度、制作动画或转换为可编辑的路径&#xff…

冠达管理:美股涨了!“越南特斯拉”市值直追丰田!这一论坛将召开

当地时间8月28日,美股三大股指团体收涨,到收盘,道指报34559.98点,涨0.62%;标普500指数报4433.31点,涨0.63%;纳指报13705.13点,涨0.84%。 高盛上星期五发布的数据显现,在英…

聚焦数据安全,“2023数据安全平台神兽企业”调研正式启动

当下,数字经济正蓬勃发展,数据已成为关键驱动力,而数据安全是保障数据要素价值的前提。数据安全建设也正在从孤立的数据安全产品过渡到数据安全平台,以更大程度促进数据的业务利用率和价值。 为了更好洞察和反映当前数据安全平台…

开发工具——IDE安装 / IDEA子module依赖导入失败编译提示xx找不到符号 / IDEA在Git提交时卡顿

近期换了工作电脑,公司的IT团队不够给力,不能复制电脑系统,所以又到了需要重装IDE配置开发环境的时候了;在安装和导入Java编译器IDEA的时候遇到一些"棘手"问题,这里整理下解决方法以备不时之需; …

bootloader串口更新程序[瑕疵学习板]

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、储备知识二、程序步骤2.程序展示1.bootloader2.然后是主运行函数总结前言 很久没有更新文章了。最近工作太忙,没有学习很多的知识,然后这两天不忙了,就学习了一下bootloader的程序升级…

hive lateral view 实践记录(Array和Map数据类型)

目录 一、Array 1.建表并插入数据 2.lateral view explode 二、Map 1、建表并插入数据 2、lateral view explode() 3、查询数据 一、Array 1.建表并插入数据 正确插入数据: create table tmp.test_lateral_view_movie_230829(movie string,category array&…

基于水基湍流算法优化的BP神经网络(预测应用) - 附代码

基于水基湍流算法优化的BP神经网络(预测应用) - 附代码 文章目录 基于水基湍流算法优化的BP神经网络(预测应用) - 附代码1.数据介绍2.水基湍流优化BP神经网络2.1 BP神经网络参数设置2.2 水基湍流算法应用 4.测试结果:5…

搭建自己的ChatGPT智能问答,HelpLook ChatBot 正式上线!

基于已有内容的站点或现成文档 零代码快速导入 即可生成自己专属的ChatGPT智能问答机器人 HelpLook ChatBot,正式发布上线! 只需连接您的数据源,HelpLook 就能为您的数据创建一个类似 ChatGPT 的聊天机器人。您可以将它作为小工具以 JS 的…

【计算机网络】TCP 的三次握手和四次挥手

TCP 是面向连接的,面向连接就是数据通讯的时候需要进行三次握手,断开通讯的时候需要进行四次挥手。 1.seq(sequence number),序列号,随机生成的 2.ack(acknowledgement number),确认号,ackseq1 3.ACK(ackno…

Could not autowire. No beans of ‘DiscoveryClient‘ type found.

一、导错了包 DiscoveryClient对应有两个包: org.springframework.cloud.client.discovery.DiscoveryClient; com.netflix.discovery.DiscoveryClient; 目前导入的包是: 改成第一个包,发现不再报红了。

数据安全治理方案

数据安全能力建设工作并非从零开始,大部分组织在此前或多或少已有一些安全体系,基本上是围绕 信息系统和网络环境开展安全保护工作,主要聚焦在信息安全和网络安全;而数据安全是以数据为核心, 围绕数据安全生命周期进行…

【Java】知识点回顾

🎄欢迎来到边境矢梦的csdn博文🎄 🎄本文主要梳理后端技术的Java的知识点以及回顾Java基础🎄 🌈我是边境矢梦,一个正在为秋招和算法竞赛做准备的学生🌈 🎆喜欢的朋友可以关注一下&…

SpringBootWeb 登录认证[Cookie + Session + Token + Filter + Interceptor]

目录 1. 登录功能 1.1 需求 1.2 接口文档 1.3 登录 - 思路分析 1.4 功能开发 1.5 测试 2. 登录校验 2.1 问题分析 什么是登录校验? 我们要完成以上登录校验的操作,会涉及到Web开发中的两个技术: 2.2 会话技术 2.2.1 会话技术介绍…

移动云发布长三角信创云电脑资源池

8月27日,2023长三角算力发展大会在苏州举行。中国移动云能力中心与江苏移动苏州分公司同期联合举办“移动云算力网络分论坛”,与各界领导、行业专家、领军企业家等分享了移动云算力调度能力新型应用、移动云“五岳”量子计算云平台的最新进展&#xff0c…

2023年Twitter营销应该知道的一些数据

2023 年的 Twitter月活跃用户数量达到了 3.539 亿。根据专家的最新估计数据(eMarketer,2022 年),这一数字在前一年回升了 3.9%,在全球社交媒体用户总数中占比为 9.4 %。 明显可以看出,马斯克的收购对 Twit…

冠达管理:核污染防治板块热度不减,建工修复等多只个股涨停

日本福岛核污染水排海引发商场担忧,核污染防治概念股表现持续活跃。 8月28日,建工修复(300958.SZ)、中电环保(300172.SZ)、捷强配备(300875.SZ)20CM强势涨停,中广核技&a…

实现人物关系图还在用Echarts吗?快试试relation-graph

关于relation-graph 支持Vue和React的 关联关系图谱组件,可以展示如组织机构图谱、股权架构图谱、集团关系图谱等知识图谱,可提供多种图谱布局,包括树状布局、中心布局、力学布局自动布局等。官网 安装使用 一,通过nodejs开发v…

课程表00

题目链接 课程表 题目描述 注意点 prerequisites[i] 中的所有课程对 互不相同prerequisites[i] [ai, bi] ,表示如果要学习课程 ai 则 必须 先学习课程 binumCourses表示这个学期必须选修 numCourses 门课程prerequisites[i].length 2 解答思路 最初想到的是使…

idea --Git Commit Template插件

Git Commit Template是一款免费的IntelliJ IDEA插件,用于提供Git提交模板。该插件可以帮助开发者编写规范的Git提交信息,提高代码管理效率。 首先安装插件: 使用Git Commit Template插件: 注:long description和Breaking changes…

亚马逊卖家必备的3款AI作图工具

Mokker Mokker AI - Instant AI Background Replacement 作为亚马逊的卖家,想要做好看的产品图,如果你此时缺少拍摄设备和环境,那么就可以用这个工具帮你。Mokker使用AI技术,可以帮你智能生成背景图。只需要上传产品图&#xff…