尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
ThingsBoard消息优先级会怎么“插队“:一次源码走读
ThingsBoard消息优先级会怎么插队一次源码走读【免费下载链接】thingsboardOpen-source IoT Platform - Device management, data collection, processing and visualization.项目地址: https://gitcode.com/GitHub_Trending/th/thingsboard凌晨三点设备离线告警在页面上迟了几秒才出现同一时刻历史遥测数据在稳定写入。翻日志队列没有丢消息消费者线程也没卡死。为什么关键消息会在噪音里变慢答案藏在 ThingsBoard 消息优先级的实现里——每个 Actor 邮箱守着两条长度不受限的队列而插队权就写在一个不到二十行的轮询方法里。消息优先级到底解决什么痛点关键消息为什么不能排队一个 Actor 对应一个租户或一条规则链的处理上下文内部单线程串行消费天然无法并行。如果一条控制指令或规则链变更消息排在几万条遥测后面用户操作的可感知延迟就完全不可控。ThingsBoard 没有引入复杂的调度算法而是把急件和平件物理分开存让轮询逻辑永远先看急件箱。ThingsBoard 消息优先级落在哪从消费行为倒推两条队列先说最终生效的表现只要高优队列里有一条消息正常队列就被整个跳过。把这个现象倒着追回去。最底层是 TbActorMailbox.java 里的两条ConcurrentLinkedQueueprocessMailbox()每轮按actorThroughput配置项控制单次批量处理的消息条数拉取永远先 poll 高优队列// TbActorMailbox两条队列 一个轮询循环 private final ConcurrentLinkedQueueTbActorMsg highPriorityMsgs new ConcurrentLinkedQueue(); // 急件箱 private final ConcurrentLinkedQueueTbActorMsg normalPriorityMsgs new ConcurrentLinkedQueue(); // 平件箱 private void processMailbox() { boolean noMoreElements false; for (int i 0; i settings.getActorThroughput(); i) { // 一批最多处理 N 条 TbActorMsg msg highPriorityMsgs.poll(); // 先取高优 if (msg null) { msg normalPriorityMsgs.poll(); // 没有才轮到普通 } if (msg ! null) { actor.process(msg); // 交给 Actor 本体处理 } else { noMoreElements true; break; } } // 没取完则立刻再跑一轮 processMailbox取完才释放 busy 状态 }入口在tellWithHighPriority()调用方通过 DefaultTbActorSystem.java 按 ActorId 找到邮箱把消息投进急件箱并触发一次消费尝试。往上追调用面集中在 AppActor.java 这类中枢 Actor 里——分区变更、规则节点更新、算子字段状态恢复都是走高优通道的典型场景。而 common/queue/ 模块解决的是节点之间的消息传递Kafka Topic、Producer/Consumer 抽象与这里的邮箱优先级是两套独立的机制读源码时容易混淆。一条高优消息的完整链路长什么样高优和平优共用同一个轮询循环差别只在于 poll 的先后顺序而不是各自独立的线程。也就是说插队能力来自先看哪个箱子不来自额外的执行资源。这意味着高优消息能插到队头但插不了处理线程。高优通道背后的两个坑现象到根因一次说清⚠️ 坑一普通消息饥饿。 现象某租户遥测长时间不消费监控看到消费者线程一直是忙的但普通队列长度只增不减。 根因processMailbox()没取完一批就立刻重新投递自己如果高优消息的到达速率持续高于单批处理速率循环永远停在highPriorityMsgs.poll()那一步普通队列一次都轮不到。 规避审计tellWithHighPriority的调用面批量数据一律走tell()线上用两条队列的积压长度做对比告警高优积压长期大于零就要介入。⚠️ 坑二销毁中的 Actor 被复活拖进循环。 现象某个初始化失败的规则节点 Actor 反复打印重试日志节点更新操作却毫无效果。 根因enqueue()里有个特判——投递中如果 Actor 已销毁普通消息直接走onTbActorStopped收尾但RULE_NODE_UPDATED_MSG这类高优消息会把destroyInProgress复位、重新initActor()。这本来是节点被改了配置老 Actor 作废重建的修复手段但如果初始化失败的根因没消除每次更新都会触发一轮销毁—复活—再失败。 规避把复活机制当作兜底而不是修复出现 INIT_FAILED 日志时先解决初始化失败本身依赖数据缺失、配置错误而不是频繁发节点更新去踢它。接下来你可以做的事 给两条邮箱队列加监控在processMailbox出口读highPriorityMsgs.size()和normalPriorityMsgs.size()接进 Prometheus 后按 ActorId 出图饥饿问题在曲线上就是一眼的事。 把tellWithHighPriority的调用点列成清单在仓库里全局搜这个方法名逐个确认这条消息真的急吗多数遥测类路径误用高优通道都能在这里暴露出来。 自定义规则节点时先定通道策略节点自身发出的下游消息走tell还是tellWithHighPriority写进节点设计文档避免团队各写各的。顺带一提ThingsBoard 消息优先级 的监控指标怎么设计是这套机制落地时最常被问到的问题。【免费下载链接】thingsboardOpen-source IoT Platform - Device management, data collection, processing and visualization.项目地址: https://gitcode.com/GitHub_Trending/th/thingsboard创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

基站外场测试规范:从实验室到真实环境的工程实践指南

基站外场测试规范:从实验室到真实环境的工程实践指南

简介:这是一份由中国移动通信研究院起草的TD-LTE Femto基站设备外场测试规范,面向无线网络工程师、设备厂商测试人员及通信标准研究者,用于解决真实室内场景下Femto基站性能验证、干扰评估和关键指标判定问题。资源包共1个PDF文档&#xff0c…

📅 2026/11/9 5:43:09
智慧博物馆解决方案拆解:四层架构与数据中台核心设计

智慧博物馆解决方案拆解:四层架构与数据中台核心设计

简介:面向博物馆智能化升级场景,这份101页PPT系统梳理了智慧博物馆从需求分析、平台设计到子系统联动的整体方案,适用于博物馆信息化负责人、系统集成商及智能化方案设计人员,帮助理解“互联网物联网”架构下的多系统联动规划思路…

📅 2026/10/6 22:42:18
IPD与质量管理体系融合:从TR评审到质量闭环的落地实践

IPD与质量管理体系融合:从TR评审到质量闭环的落地实践

简介:这份63页PPT以华为IPD与质量管理体系融合为切入点,系统梳理了研发质量管理的落地路径,适合企业研发管理人员、质量工程师及对IPD流程感兴趣的从业者学习。内容从IPD基础讲起,覆盖IPD主业务流框架、基于ISO9000的IPD流程管理体…

📅 2026/10/28 4:51:29
MORE NEWS

更多资讯

📰

电工证复审和有效日期的良心建议,别再让证书过期了

电工证复审和有效日期的良心建议,别再让证书过期了 证书过期了不知道怎么复审延期?你不是一个人。作为一名在特种作业行业摸爬滚打多年的老手,我见过太多人因为不了解电工证的有效期和复审流程,导致证书过期后被单位暂停工作,甚至被罚款、被辞退的情况。…

📰

上海南站电工证2026河南最新政策:学历不高也能考,这些细节你要知道

上海南站电工证2026河南最新政策:学历不高也能考,这些细节你要知道 你是不是也担心自己学历不高,报不了电工证?别急,2026年河南最新政策已经出台,明确规定了报名条件不再只看学历,只要满足一定的工作经验和实操能力,都能报考上海南站电工证。…

📰

消防电工证的报考条件2026河南最新政策解读

消防电工证的报考条件2026河南最新政策解读 证书过期了不知道怎么复审延期?2026年河南最新政策已经落地,如果你还在为消防电工证的复审流程发愁,或者正在考虑报考,这篇文章能帮你理清所有疑问。尤其是从事施工现场管理的朋友,别再因为证书问题影…

📰

海口电工证复审费用揭秘:怕考不过白交培训费?这样准备通过率更高

海口电工证复审费用揭秘:怕考不过白交培训费?这样准备通过率更高 怕考不过白交培训费?别让海口电工证复审费用坑了你!如果你正准备参加电工证复审,或者已经拿到证但不知道怎么操作,那这篇文章就是为你量身定制的。 通过率揭秘…

📰

花桥电工证去哪报名 郑州报考避坑指南:应届生怎么考更靠谱

花桥电工证去哪报名 郑州报考避坑指南:应届生怎么考更靠谱 急需特种作业证才能上岗找工作,这是很多漯河应届工程类毕业生的真实写照。现在找工作,没有特种作业操作证,很多岗位都进不去,尤其是像电工、焊工这些高需求的工种。如果你正在纠结“…

📰

内蒙古电工证号考试真题与备考技巧,官方报名入口你知道在哪吗?

内蒙古电工证号考试真题与备考技巧,官方报名入口你知道在哪吗? 怕考不过白交培训费?内蒙古电工证号考试难度高、题量大,很多人一上来就被吓退。别急,我来告诉你怎么稳稳拿下证书,不花冤枉钱。…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬