阿里云事件上报-确保发送成功

1、阿里云Mqtt消息发送成功回调:

LinkKit.getInstance().publish(request, new IConnectSendListener() {
    @Override
    public void onResponse(ARequest aRequest, AResponse aResponse) {
        // 消息成功提交给操作系统的发送缓冲区。
        // 在网络波动等异常情况下,消息可能无法到达云端。
        // 如果上行的消息有对应的下行的reply, 建议通过reply报文来确认上行消息的到达。
    }
    @Override
    public void onFailure(ARequest aRequest, AError aError) {
        // 发布失败
    }
});

成功回调并不是真正意义的发送成功,为确保消息发送成功,使用reply报文实现

2、订阅reply topic

类型:
--订阅的topic列表
--"/sys/${productKey}/${deviceName}/thing/event/property/post_reply",   --属性上报回传
--"/sys/${productKey}/${deviceName}/thing/service/property/set",      --属性设置
--"/sys/${productKey}/${deviceName}/thing/event/${tsl.event.identifier}/post_reply",  --事件上报回传
--"/sys/${productKey}/${deviceName}/thing/service/${tsl.service.identifier}",     --服务调用

实际订阅:
 "/sys/${productKey}/${deviceName}/thing/event/property/post_reply",   --属性上报回传
 "/sys/%s/%s/thing/service/property/set",      --属性设置
 "/sys/%s/%s/thing/event/+/post_reply",  --事件上报回传
 "/sys/%s/%s/thing/service/+_reply",     --服务调用

3、事件上报格式

上报格式:
{
    "id": "123",
    "version": "1.0",
    "sys":{
        "ack":0
    },
    "params": {
        "value": {
            "Power": "on",
            "WF": "2"
        },
        "time": 1524448722000
    },
    "method": "thing.event.${tsl.event.identifier}.post"
}

reply格式
{
    "code": 200,
    "data": {},
    "id": "123",
    "message": "success",
    "method": "thing.event.${tsl.event.identifier}.post",
    "version": "1.0"
}

4、订阅接收处理

伪代码实现流程:
1、生成消息id:id(第3点上报格式中的“id”参数)
2、注册该id的回调函数(reply也会返回该id参数,根据id,执行对应函数)
3、上报事件
4、接收事件reply
5、执行回调函数(回调函数处理事件发送成功的后续)
  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黄黄黄油

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值