MQTT 协议

1. 概述

MQTT 是一种专为物联网(IoT)和低带宽环境设计的轻量级消息传输协议,基于发布/订阅(Pub/Sub)模型,支持设备间高效、可靠的双向通信。其核心目标是低功耗、低带宽消耗和高实时性,尤其适合网络不稳定或资源受限的场景(如传感器、移动设备)。

IoTDB 深度集成了 MQTT 协议能力,完整兼容 MQTT v3.1(OASIS 国际标准协议)。IoTDB 服务器内置高性能 MQTT Broker 服务模块,无需第三方中间件,支持设备通过 MQTT 报文将时序数据直接写入 IoTDB 存储引擎。

2. 配置方式

默认情况下,IoTDB MQTT 服务通过${IOTDB_HOME}/${IOTDB_CONF}/iotdb-system.properties加载配置。

具体配置项如下:

名称描述默认
enable_mqtt_service是否启用 mqtt 服务FALSE
mqtt_hostmqtt 服务绑定主机127.0.0.1
mqtt_portmqtt 服务绑定端口1883
mqtt_handler_pool_size处理 mqtt 消息的处理程序池大小1
mqtt_payload_formattermqtt​ 消息有效负载格式化程序。可选项:​​json:仅适用于树模型。​​line:仅适用于表模型。json
mqtt_max_message_sizemqtt 消息最大长度(字节)1048576

3. 写入协议

  • 行协议语法格式
<measurement>[,<tag_key>=<tag_value>[,<tag_key>=<tag_value>]][ <attribute_key>=<attribute_value>[,<attribute_key>=<attribute_value>]] <field_key>=<field_value>[,<field_key>=<field_value>] [<timestamp>]
  • 示例
myMeasurement,tag1=value1,tag2=value2 attr1=value1,attr2=value2 fieldKey="fieldValue" 1556813561098000000

4. 命名约定

  • 数据库名称

MQTT topic 名称用 / 分割后, 第一串内容作为数据库名称。

topic: stock/Legacy
databaseName: stock


topic: stock/Legacy/#
databaseName:stock
  • 表名称

表名称使用行协议中的 <measurement>

  • 类型标识
Filed 内容IoTDB 数据类型
1
1.12
DOUBLE
1f
1.12f
FLOAT
1i
123i
INT64
1u
123u
INT64
1i32
123i32
INT32
"xxx"TEXT
t,T,true,True,TRUE
f,F,false,False,FALSE
BOOLEAN