标签:格式 定制 授权 文章 编码 toc 支持 ssid access
前序系列文章>>>
开放消息平台主要通过 Pulsar 主动推送各种事件数据给外部合作伙伴,以满足合作伙伴对消息实时性和消息持久化的要求。
一、Pulsar
? 对于Pulsar的介绍,大家可以看一下这位大佬的简单介绍>>>pulsar-介绍。简单来说,Pulsar最初由雅虎开发,现在由 Apache 软件基金会管理,是一个支持多租户、高性能的服务器到服务器之间消息通讯的解决方案。
? 涂鸦智能基于开源的 Pulsar 系统进行了定制改进,按照涂鸦智能提供的 Pulsar SDK 可完成消息接入。
? Pulsar 作为消息代理采用了Pub/Sub(发布订阅)的设计模式。该设计模式中,生产者将消息发布到主题,然后消费者可以订阅这些主题,处理传入消息,并在处理完成时发送确认。当订阅被创建时(即使消息处理设备已断开连接)所有的消息都将被 Pulsar 保留。只有在消息处理设备确认消息被成功处理后,保留下来的消息才会被丢弃。
? 此外,一个主题可以由多个消费者订阅,并且当消费者成功处理消息时,它需要向代理发送确认,以便代理可以丢弃该消息。涂鸦智能的 Pulsar 消息分发器(Broker)为每个主题分配了多个分区,Pulsar 消息分发器将根据分区和消费者分发消息。
二、相关说明
安全:
具体参考 ConsumerExample 代码。接入时需要提供以下三部分数据:
创建项目。
代码示例:
String url = "";
String accessId = "";
String accessKey = "";
MqConsumer mqConsumer = MqConsumer.build()
.serviceUrl(url)
.accessId(accessId)
.accessKey(accessKey)
.maxRedeliverCount(3)
.messageListener(new MqConsumer.IMessageListener() {
@Override
public void onMessageArrived(Message message) throws Exception {
//write your own message processing logic
}
});
mqConsumer.start();
数据格式:
{
"protocol": 4,
"pv": "2.0",
"t": 146052438362,
"data":"4FDEE3FE59FCD76E260F7115011D65C7FD2AF59BFA4DC29E5DDF3FDA6BD5447E02F679052C34BBAAB7BB0EFEED62C760FD2AF59BFA4DC29E5DDF3FDA6BD5447EC660C816075824E004EC0123DE4FD1B638BB633A478EB2C2004EF4289276****",
"sign": "58285279b5b5790c7d917de88b3e****"
}
数据签名:
在获得真正的data数据前,可以设置防篡改 MD5 签名校验。签名算法执行步骤如下:
签名校验通过后,对数据进行解密:
解密后数据格式如下:
{
"devId": "002dj00118fe34d9****",
"productKey": "开发者平台定义产品对应的产品 Key",
"dataId":"1459168450ddfdfoiopiopi****",//全局唯一 ID, 数据上报唯一标识 ID
"status": [
{
"code":"switch",
"value":false,
"mode":"rw",
"t":146052438362
},
{
"code":"work_mode",
"value":"colour",
"mode":"rw",
"t":146052438362
}
]
}
三、业务数据
协议号:协议号(不同协议号代表了不同的功能)。
设备数据上报事件:
{
"devId": "002dj00118fe34d9****",
"productKey": "开发者平台定义产品对应的产品 Key",
"dataId": "1459168450ddfdfoiopiopi****",
"status": [
{
"数据点编码1(产品定义时对应的数据点编码)": "数据点对应的值",
"t": 1540615024283 // 数据点状态发生时间
},
{
"数据点编码2(产品定义时对应的数据点编码)": "数据点对应的值",
"t": 1540615024283 // 数据点状态发生时间
}
]
}
其他事件:
数据示例
{
"devId": "002dj00118fe34d9****",
"productKey": "开发者平台定义产品对应的产品 Key",
"bizCode": "online",
"bizData": {
"time": 146052438362
}
}
数据示例
{
"devId": "002dj00118fe34d9****",
"productKey": "开发者平台定义产品对应的产品 Key",
"bizCode": "offline",
"bizData": {
"time": 146052438362
}
}
数据示例
{
"devId": "002dj00118fe34d9****",
"productKey": "开发者平台定义产品对应的产品 Key",
"bizCode": "nameUpdate",
"bizData": {
"devId": "002dj00118fe34d9****",
"name": "new name"
}
}
数据示例
{
"devId": "002dj00118fe34d9****",
"productKey": "开发者平台定义产品对应的产品 Key",
"bizCode": "dpNameUpdate",
"bizData": {
"devId": "002dj00118fe34d9****",
"name": "new name",
"dpId": "dpId"
}
}
数据示例
{
"devId": "002dj00118fe34d9****",
"productKey": "开发者平台定义产品对应的产品 Key",
"bizCode": "bindUser",
"bizData": {
"devId": "002dj00118fe34d9****",
"uuid": "06200043b4e618c1****",
"uid":"ay1529485403390****",
"token": "IIpQ****"
}
}
设备移除
bizData 说明
数据示例
{
"devId": "002dj00118fe34d9****",
"productKey": "开发者平台定义产品对应的产品 Key",
"bizCode": "delete",
"bizData": {
"devId": "002dj00118fe34d9****",
"uid":"ay1529485403390S****"
}
}
数据示例
{
"bizCode":"upgradeStatus",
"bizData": {
"devId":"6ca8756d*****1b4ewsdn",
"moduleType":0,
"upgradeStatus":2,
"description":"升级测试",
"oldVersion": "1.0.1",
"newVersion": "1.0.2"
},
"devId":"6ca8756d*****1b4ewsdn",
"productKey":"vFHpaEFwu8UD****",
"ts":1562232522192
}
标签:格式 定制 授权 文章 编码 toc 支持 ssid access
原文地址:https://blog.51cto.com/14985709/2552305