Skip to content

Thingsboard 消息队列 kafka topic 设计

codeHui edited this page Dec 12, 2022 · 7 revisions

本文解释为什么Thingsboard微服务分布式下-设备控制的数据流-架构与可用性分析(有架构图) 的图中,topic有"tb_rule_engine.main.3","tb_core.notification.tb-core-1"这两种的格式

.3是指partition是3

因为TB(Thingsboard)对很多消息队列(queue)进行了支持,所以对queue做了抽象,抽象层的topic就是"tb_rule_engine.main.3"
有的queue没有分区(partition)的概念,对于这些queue,topic就是"tb_rule_engine.main.3"(相当于一个一级菜单),该topic只会被一个node消费 Kafka有partition,最终子类实现时,topic是tb_rule_engine_main,而partition就是3(相当于一个二级菜单),该partition只会被一个node消费

.main是什么?

‘tb_rule_engine.main’ 是一般消息
‘tb_rule_engine.hp’ 是 high priority 高优先级消息.(如下图源码,highPriorityMsgs里有消息,就不会处理normalPriorityMsgs的消息,从而实现消息处理的优先级)
‘tb_rule_engine.sq’ 是sequence有顺序的消息(会牺牲性能) image

.notification是什么?

notification的消息只会发给制定的一个node(.tb-core-1),相当于消费组里只有一个消费者 image