全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 钉钉智能硬件
阿里云物联网套件

Topic

更新时间:2017-08-09 15:41:23

MQTT协议和CoAP协议都支持Pub/Sub的通信方式,Pub/Sub是基于Topic路由转发消息的。

讲解Topic之前,先介绍一下另一个概念:Topic类

Topic类

为了方便海量设备基于海量Topic进行Pub/Sub通信,简化授权操作,物联网套件增加Topic类的概念,用户只需在产品下定义Topic类,套件会自动将Topic映射到对应的设备上,不需要用户单独为每个设备授权Topic。如下图:Topic类

Topic类的特性:

  • Topic类是一类Topic的集合,举个例子,Topic类:/pk/${deviceName}/update是具体Topic:/pk/device1/update或者/pk/device2/update的集合。
  • Topic类格式必须以“/”进行分层,区分每个类目。其中前两个类目已经规定好,第一个代表产品标识ProductKey,第二类目${deviceName}通配deviceName
  • 其余类目命名只能包含字母,数字和下划线(_)命名每级类目,每级类目不能为空

注意:Topic类不能用于通信,pub/sub是基于具体的Topic通信。举个例子,用户不能使用/pk/${deviceName}/update进行通信,只能使用/pk/device1/update或者/pk/device2/update通信。

Topic

Topic的一些特性:

  • Topic归属于相对应的设备,不能被其他设备用于pub/sub通信。举个例子,Topic:/pk/device1/update归属于设备device1,只能被device1用于发布订阅消息,而不能被设备device2用于发布订阅消息。
  • Topic是根据deviceName从Topic类中映射动态创建而来的,只有当deviceName创建存在时,对应的Topic才会创建,而且这个Topic只能被该设备通信使用。
  • Topic格式和Topic类一致,区别在于Topic类第二个类目是一个通配符${deviceName},而Topic则是具体的deviceName。

通配符

通配符 描述
# 这个通配符必须出现在最后一个类目,代表本级及下级所有类目,例如Topic为/productKey/#,这不仅可以代表/productKey/device1/update,也可以代表/productKey/device1/update/error
+ 代表本级所有类目,例如Topic为/productKey/+/update,可以代表/productKey/device1/update,又可以代表/productKey/device2/update。Topic类中${deviceName}就是+的一种用法,只不过规定通配的内容必须是deviceName
  • 同一个类目只能出现一个通配符,例如/productKey/##或者/productKey/++/tem都不合法。

注意:通配符只能在配置规则引擎时使用

本文导读目录