消息通信Topic
物联网平台中,服务端和设备端通过Topic来实现消息通信。Topic是针对设备的概念,Topic类是针对产品的概念。产品的Topic类会自动映射到产品下的所有设备中,生成用于消息通信的具体设备Topic。
产品Topic类
为了方便海量设备基于海量Topic进行通信,简化授权操作,物联网平台增加了产品Topic类的概念。Topic类是一类Topic的集合。例如,产品的自定义Topic类/${YourProductKey}/${YourDeviceName}/user/update
是具体Topic/${YourProductKey}/device1/user/update
和/${YourProductKey}/device2/user/update
的集合。
您创建设备后,产品的所有Topic类会自动映射到设备上。您无需单独为每个设备创建Topic。
关于Topic类的说明:
- Topic类中,以正斜线(/)进行分层,区分每个类目。其中,有两个类目为既定类目:${YourProductKey}表示产品的标识符ProductKey;${YourDeviceName}表示设备名称。
- 类目命名只能包含字母,数字和下划线(_)。每级类目不能为空。
- 设备操作权限:发布表示设备可以往该Topic发布消息;订阅表示设备可以订阅该Topic获取消息。
- Topic类是一个Topic模版配置,编辑更新某个Topic类后,可能对产品下所有设备使用该类Topic通信产生影响。建议在设备研发阶段设计好,设备上线后不再变更Topic类。
- 产品Topic类的订阅操作权限是定义产品(所有设备)对此类Topic是否有发起订阅指令(SUB)的权限。 订阅(SUB)和取消订阅(UNSUB)都需由设备发起。设备发送SUB指令订阅某个Topic后,该订阅永久生效;仅在设备发起UNSUB指令取消订阅该Topic后,订阅才会被取消。
设备Topic
产品的Topic类不用于通信,只是定义Topic。用于消息通信的是具体的设备Topic。
- Topic格式和Topic类格式一致。区别在于Topic类中的变量${YourDeviceName},在Topic中是具体的设备名称。
- 设备对应的Topic是从产品Topic类映射出来,根据设备名称而动态创建的。设备的具体Topic中带有设备名称(即DeviceName),只能被该设备用于消息通信。例如,Topic:
/${YourProductKey}/device1/user/update
归属于设备名为device1的设备,所以只能被设备device1用于发布或订阅消息,而不能被设备device2用于发布或订阅消息。