MQTT客户端
mqttClient
组件:MQTT客户端组件。用于将消息发布到MQTT Broker的指定主题,支持QoS设置、SSL/TLS加密连接、断线重连等功能。组件会将msg.Data作为消息负载发送到目标主题。
# 配置
该组件支持通过server
字段复用共享的MQTT连接。详见组件连接复用。
字段 | 类型 | 说明 | 默认值 |
---|---|---|---|
topic | string | 发布主题,支持使用组件配置变量进行变量替换 | 无 |
server | string | MQTT Broker地址,格式为host:port | 无 |
username | string | MQTT认证用户名 | 无 |
password | string | MQTT认证密码 | 无 |
maxReconnectInterval | time.Duration | 断线重连间隔,支持10s、1m等时间格式 | 10s |
qos | int | MQTT QoS等级(0/1/2) | 0 |
cleanSession | bool | 是否清除会话,true表示每次连接都是新会话 | false |
clientID | string | MQTT客户端标识,需保证唯一性 | 随机ID |
CAFile | string | SSL/TLS CA证书文件路径 | 无 |
CertFile | string | SSL/TLS 客户端证书文件路径 | 无 |
CertKeyFile | string | SSL/TLS 客户端私钥文件路径 | 无 |
配置说明
- SSL/TLS加密连接需同时配置CAFile、CertFile和CertKeyFile三个证书相关字段
- topic支持使用${metaKeyName}语法引用metadata中的值进行替换
- clientID建议配置有意义的唯一标识,方便问题排查
# Relation Type
Success: 以下情况消息发送到
Success
链路:- 消息成功发布到MQTT Broker
- QoS0消息发送完成
- QoS1/2消息收到确认
Failure: 以下情况消息发送到
Failure
链路:- MQTT连接断开
- 发布超时
- 主题格式错误
- SSL/TLS连接失败
# 执行结果
组件执行时:
- 将msg.Data作为消息负载发送到指定主题
- 不会修改原始消息的msg、metadata和msgType内容
- 发送失败时会在metadata中添加error字段描述错误信息
# 配置示例
{
"id": "s2",
"type": "mqttClient",
"name": "往mqtt Broker 推送数据",
"configuration": {
"server": "127.0.0.1:1883",
"topic": "/device/msg/${deviceId}"
}
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 应用示例
应用示例参考:mqttClient (opens new window)
{
"ruleChain": {
"id":"rule01",
"name": "测试规则链",
"root": true
},
"metadata": {
"nodes": [
{
"id": "s1",
"type": "jsTransform",
"name": "转换",
"configuration": {
"jsScript": "metadata['name']='test02';\n metadata['deviceId']='id01';\n msg['addField']='addValue2'; return {'msg':msg,'metadata':metadata,'msgType':msgType};"
}
},
{
"id": "s2",
"type": "mqttClient",
"name": "往mqtt Broker 推送数据",
"configuration": {
"server": "127.0.0.1:1883",
"topic": "/device/msg/${deviceId}"
}
}
],
"connections": [
{
"fromId": "s1",
"toId": "s2",
"type": "Success"
}
]
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
在 GitHub 上编辑此页 (opens new window)
上次更新: 2024/12/22, 03:38:12