阿里云 - 微消息队列 MQTT

玩了一下 阿里的 mqtt, 感觉要放弃了

demo

lmq-demo

// 开源sdk地址:https://github.com/mqttjs/MQTT.js
var mqtt = require('mqtt')
var CryptoJS = require('crypto-js')

var accessKey='xxxx'
var secretKey='xxxx'

var clientId = 'GID_dev@@@hardware2'
var instanceId='mqtt-cn-xxxx'

// https://help.aliyun.com/document_detail/48271.html
var username = 'Signature|' + accessKey + '|' + instanceId;
var password = CryptoJS.HmacSHA1(clientId, secretKey).toString(CryptoJS.enc.Base64);

var options={
    'username':username,
    'password':password,
    'clientId':clientId,
        'keepalive':90,
        'connectTimeout': 3000
}

// //tls安全连接:"tls://host:8883"
var client  = mqtt.connect('tcp://host:1883',options)

var topic='dev'

// client.on('connect', function () {
//   client.subscribe(topic, {'qos':1})
// })

// client.on('message', function (topic, message) {
//   console.log('topic:'+topic+' msg:'+message.toString())
// })

var i=0
setInterval(function(){
  client.publish(topic + '/test/1', 'Hello mqtt ' + (i++))
  // client.publish(topic + '/p2p/' + clientId, 'Hello mqtt ' + (i++))
},1000)

配置费用

微消息队列 for IoT(包年包月)

基础版一年

  • 连接数上限
    1,000个
  • TPS 上限
    500条/s
  • 订阅关系数上限
    10,000个

迁移痛点

    1. 客户端单设备订阅关系限制 <= 30个
      app 同事需要评估一下,我感觉有点不够用
      产品系列和定价
产品系列说明

cleanSession=false
如果离线消息过多,即大于 30 条,微消息队列 MQTT 版系统会分批(5 秒一次,每次 30 条)下发离线消息,这个太慢了

    1. 阿里云规则里必须要建立顶级 Topic
      要改代码
      暂时分为两类:dev 和 app


      Topic 列表
    1. 获取 MQTT 客户端在线状态
      要改代码
      获取 MQTT 客户端在线状态
    1. 权限验证有两种模式
      需要讨论怎么使用
      鉴权概述

亮点

除了标准 MQTT 协议所支持的发布/订阅(Pub/Sub)消息收发模式外,微消息队列 MQTT 版还支持点对点(Point to Point,简称 P2P)模式。
P2P 消息收发模式

推荐阅读更多精彩内容