产品定价 立即试用
MQTT Broker
文档 > 集成 > HTTP
入门
安装 架构 API 常见问题
目录

HTTP 集成

TBMQ HTTP集成提供了一种通过HTTP协议将设备MQTT消息转发至外部系统的简便方式。 它作为TBMQ与外部应用之间的桥梁,确保数据交换顺畅可靠。

数据流概述TBMQ HTTP集成支持将MQTT消息转发至外部HTTP服务:

  1. 设备(客户端)发布MQTT消息到匹配集成主题过滤器的主题。
  2. TBMQ代理接收消息并转发至TBMQ Integration Executor。
  3. TBMQ Integration Executor处理消息,将其格式化为HTTP请求并转发至外部服务。
  4. 外部服务接收请求并相应处理数据。

image

前置条件

设置集成前,请确保:

创建ThingsBoard集成

本教程以ThingsBoard作为接收TBMQ HTTP请求的外部服务,也可使用其他兼容HTTP的服务。

按照官方ThingsBoard HTTP集成指南在ThingsBoard Cloud上创建集成。

创建HTTP集成后:

  1. 打开详情页并启用调试模式以验证数据接收。
  2. 复制HTTP端点URL,下一步将用到。

创建TBMQ HTTP集成

  1. 进入集成页面,点击 “+” 创建新集成。
  2. 选择 HTTP 作为集成类型,点击下一步
  3. 主题过滤器页面点击下一步,订阅默认主题 tbmq/#
  4. 配置步骤,粘贴ThingsBoard集成的端点URL
  5. 打开高级设置,将负载内容类型设为 JSON
  6. 点击添加保存集成。

可使用“检查连接”按钮发送HEAD请求测试与已配置HTTP端点的连通性。

Topic Filters

Topic filters 定义基于 MQTT 的订阅,并作为 TBMQ HTTP Integration 的触发器。当 broker 收到与 configured topic filters 匹配的消息时,integration 会处理并转发到指定外部系统。

若 integration 配置了如下 topic filter:

1
tbmq/devices/+/status

则匹配该模式的消息都会触发 integration,例如:

1
2
tbmq/devices/device-01/status
tbmq/devices/gateway-01/status

配置

字段 描述
仅发送消息负载 启用时,传入消息的负载按原样转发。禁用时,发送包含负载及其他属性的JSON对象。
端点URL 发送HTTP请求的外部服务URL。
请求方法 定义请求方式。支持:GETPOSTPUTDELETE
凭证 支持的认证选项:
  匿名 – 无需认证。
  基本认证 – 使用 用户名密码 认证。
  PEM认证 – 使用PEM证书认证。
Headers 添加到HTTP请求头的键值对集合。
负载内容类型 定义请求体格式。支持:JSONTextBinary (Base64)
解析失败时按二进制发送 启用时,JSONText 解析失败的消息将作为二进制负载发送。禁用时,失败消息不会发送。
读取超时 请求在超时前等待响应的最长时间。
最大并行请求数 限制并发HTTP请求数。
最大响应大小 定义允许的传入响应最大大小。
Metadata 可用于额外处理的自定义元数据。

事件

TBMQ 为 integration 相关事件提供日志,便于调试和排查 integration 行为。 以下为三种「Event」类型:

  • Lifecycle Events – 记录 StartedCreatedUpdatedStopped 等事件

  • Statistics – 提供 integration 性能洞察,包括已处理消息数和错误数

  • Errors – 记录与认证、超时、payload 格式或外部服务连通性相关的失败

发送上行消息

发送消息请按以下步骤:

  1. 进入WebSocket Client页面。
  2. 选择“WebSocket Default Connection”或其他可用连接,点击连接。确保“连接状态”显示为 Connected
  3. 将“主题”字段设为 tbmq/http-integration,以匹配集成的主题过滤器 tbmq/#
  4. 点击发送图标发布消息。
  5. 成功后,消息应出现在“消息”表中。

消息发布后:

  1. ThingsBoard Cloud 中打开HTTP集成详情。
  2. 进入事件标签页。
  3. 若配置正确,应看到状态为 ‘OK’ 的事件及类似如下的消息负载:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
    "payload": {
        "temperature": 25
    },
    "topicName": "tbmq/http-integration",
    "clientId": "tbmq_7QUvZzow",
    "eventType": "PUBLISH_MSG",
    "qos": 1,
    "retain": false,
    "tbmqIeNode": "tbmq_ie_node",
    "tbmqNode": "tbmq_node",
    "ts": 1742553324248,
    "props": {},
    "metadata": {
        "integrationName": "HTTP integration"
    }
}

消息说明:

  • payload:MQTT消息内容。
  • topicName:发布消息的MQTT主题。
  • clientId:发布消息的MQTT客户端ID。
  • eventType:MQTT事件类型,此处为已发布消息(当前唯一支持的类型)。
  • qos:传入消息使用的服务质量等级。
  • retain:表示消息是否为保留MQTT消息。
  • tbmqIeNode:处理消息的Integration Executor服务节点ID。
  • tbmqNode:接收消息的TBMQ代理节点ID。
  • ts:接收消息时的时间戳(毫秒)。
  • props:MQTT5.0用户属性或其他MQTT属性。
  • metadata:从集成配置添加的额外元数据,默认包含处理消息的集成名称。