更新时间:2024-09-10 01:49:13
云项目中提供消息订阅功能,当项目中的设备相关状态发生变化时(如设备注册、设备数据上报、设备离线等),开放消息平台通过 Pulsar 主动推送各种事件数据给外部合作伙伴,以满足合作伙伴对消息实时性和消息持久化的要求。
目前涂鸦基于开源的 Pulsar 系统进行了定制改进,并提供 Java 版本 Pulsar SDK。
本文通过使用 Java 开发工具 IntelliJ IDEA 进行消息接收实践。
单击进入 Pulsar SDK 下载地址,单击页面 Code,下载 Zip 包至本地,解压缩即可。
IntelliJ IDEA 打开源码工程: 单击 Open ,查找到上一步下载的解压缩后文件。
修改 open-mq-sdk/src/main/java/com.tuya.open.sdk/mq/
MqConsumer.java 文件参数。修改 Java 工程为测试环境。
private MqEnv env = MqEnv.TEST;
MqEnv.TEST 代表测试环境。MqEnv.PROD 代表正式环境。具体参数说明可查看 mq/MqEnv.java 文件。
修改 open-mq-sdk/src/main/java/com.tuya.open.sdk/example/
ConsumerExample.java 文件参数。
String url = MqConfigs.CN_SERVER_URL;
String accessId = "xt*****ff**n1****8ufo";
String accessKey = "479bcb7345******582d9c******4ef7";
参数说明如下:
accessId
:填写云开发平台中 API 授权密钥的 Access ID。accessKey
:填写云开发平台中 API 授权密钥的 Access Secret。url
:具体参数可查看 mq/MqConfigs.java,务必修改为私有云对应域名地址。测试设备所上报的消息会发送至测试通道,以方便您进行设备功能调试。
在开发工具 IntelliJ IDEA 上,右键单击 ConsumerExample.java 文件,选择 RUN,执行该程序。
通过 App 端操作设备。
在开发工具 IntelliJ IDEA 上自动获取到消息推送展示。
数据展示,字段含义请参考文档 消息类型 。
接收的消息
Message received: {
"data": "mT9eqNz5MCgibKjEC+zsikNpoukkmad6K/uS18FozRETIriMEApJBXXm5o37QmMFzQtf9wFhkSQ6IBE2P3yYPrgKoKYnbLa+mN1TUCda/JYJWG9dqUPOlAUjyey1/PKjWu8doYvgN8fCe0HIMZBTI1eVfe4RzVkEHvaaFLVF+lpfqGdvTWhlLNbh6092SG9MsR8Aq2sXHt2naIfIT36xYU9xPHy0C65K3HDuQgwi69fRWhXdA1LWvsKPavTOappD",
"protocol": 4,
"pv": "2.0",
"sign": "d6be290bd0ffa196c313ecd315e6ff72",
"t": 1622701486365
}, seq = 0, time = 1622701486373, consumed time = 1622701486652
拼接参数说明如下:
seq
:获取此消息的 Sequence IDtime
:客户端发布此消息时间的时间戳consumed time
:系统打印信息时间的时间戳解析 Data 数据
the real message data: {
"dataId": "642769b3-c434-11eb-87b5-02425b0322e7",
"devId": "vdevo162201920765824",
"productKey": "atxdggtv9ddjt8xx",
"status": [{
"code": "switch_led",
"t": 1622701486258,
"value": true,
"20": "true"
}]
}
Data 数据解析方法参考 数据签名。SDK 中已封装 Data 解密方法,具体请查看 mq.AESBase64Utils.java 文件。
接收的消息
Message received: {
"data": "UoHAZ1lTSAZRr0HFrePEw/rsMDlKAOIDeSjFQbf35K4TIriMEApJBXXm5o37QmMFzQtf9wFhkSQ6IBE2P3yYPrgKoKYnbLa+mN1TUCda/JYJWG9dqUPOlAUjyey1/PKjWu8doYvgN8fCe0HIMZBTI1eVfe4RzVkEHvaaFLVF+loWkfytt13z5nHmD9EPdmOZOxGcbyvjGOOp9iQOA3Om2XPur4DMxX0M+V+fFkyD9OXFRR9d0DA6J4LHmvDBtfO3U4HBd5MyELCdYJR7B+jCuVAcflFEGZKfv+5vINIuDZu0q1Ono+G6AcEyfmhIjrrY8EpmfMW/mWvfgGAreIOThH5WroVQpgbzIDgcGsXAsW1zzZYe27YlWKXleLLBEBcQx6Y2gSutLqfsu0MA59GNtg==",
"protocol": 4,
"pv": "2.0",
"sign": "f055d71c2caae3549a53adddde16aaec",
"t": 1622701494099
}, seq = 1, time = 1622701494099, consumed time = 1622701494059
解析 Data 数据
the real message data: {
"dataId": "68ce83d2-c434-11eb-87b5-02425b0322e7",
"devId": "vdevo162201920765824",
"productKey": "atxdggtv9ddjt8xx",
"status": [{
"code": "control_data",
"t": 1622701494064,
"28": "100b00193020800000000",
"value": "{\"bright\":0,
\"change_mode\":\"gradient\",
\"h\":176,
\"s\":403,
\"temperature\":0,
\"v\":520
}"
}]
}
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈