消息队列概览

最近更新时间:2019-05-15 11:12:00

用户在创建产品之后,可以在消息队列页面配置,选择设备消息类型推送到消息队列中,用户服务端从队列里获得设备数据。消息队列功能为用户提供了设备与第三方服务端之间可靠的异步通信通信机制。

下图是以消息队列 CMQ 为例说明规则引擎转发数据到消息队列的全过程:
image

适用场景

消息队列功能最大的特点是与腾讯云的消息队列服务结合,提供了可靠的消息存储与传输机制。消息队列甚至可以和其它腾讯云计算模块连通,提供无缝的计算服务。基于消息队列功能的特点,它适用于以下场景:

  • 需要快速稳定的接收设备消息,特别是设备会产生海量消息或者消息量在不同时间点会有很大波动时。
  • 需要实时地处理设备状态消息,保证设备状态信息不会丢失。
  • 需要与其它腾讯云计算模块连接,处理海量设备信息。

消息类型

目前消息队列功能会转发如下两种消息类型:

  • 设备状态通知:即设备的上下线变化通知,以及物联网套件产生的一些系统通知。
  • 设备上报消息:即设备发布到 Topic 的所有消息。开通产品的消息队列功能并且在参数配置页面勾选“设备上报消息”选项后,物联网通信后台就会把该产品下所有设备发布到 Topic 中的消息都转发到消息队列中。

消息格式

上报到消息队列的消息格式采用 JSON 字符串的形式,格式如下所示:

{
    "MsgType":"Publish",
    "Event":"",
    "Topic":"iot-product/iot-device/update",
    "Seq":244,
    "PayloadLen":121,
    "DeviceId":"144115205259838664",
    "ProductName":"iot-product",
    "DeviceName":"iot-device",
    "Payload":"eyJhY3Rpb24iOiAicmVwb3J0IiwgInRhcmdldERldmljZSI6ICJhYyIsICJkZXZJZCI6MTQ0MTE1MjA1MjU5ODM4NjY0LCAiZGF0YSI6eyJjdXJyZW50IjoyNTExLCAidGVtcCI6MjczMSwgIndhcm5pbmciOjF9fQ=="
}

下面是各个字段的含义:

字段 含义
MsgType 上报的消息类型,取值为 "Publish" 或 "Status",代表设备上报消息和设备状态通知。
Event 当 MsgType 为 Status 时该字段才有效,代表状态通知的事件,比如取值为 "Online" 代表上线,"Offline" 代表下线。
Topic Publish 消息的主题。
Seq 消息的序列号。
PayloadLen 消息内容 Payload 的长度。
DeviceId 设备 ID。
ProductName 产品名。
DeviceName 设备名。
Payload 消息内容,是一个用 Base64 编码的字符串。

消息配置

物联网通信支持两种类型的消息队列。消息队列 CMQ 和消息队列 CKafka。

  1. 登录物联网通信控制台,单击左侧菜单栏【产品列表】。
  2. 进入产品详情页,单击【消息队列】,可按需选择消息队列类型进行配置。