Internet IOT Hub MQTT消息丢失在Internet上

时间:2017-11-02 14:33:39

标签: azure debian azure-iot-hub

我们正在使用azure-iot-device-mqtt节点包将debian计算机连接到Azure IOT Hub。我们注意到,当互联网掉线时(即我们断开它)Device Explorer认为设备仍然连接(大约10秒),并且在此期间被触发的消息不会到达设备(或排队)。 10秒后,它们将出现在设备资源管理器队列中。此外,设备仍然认为它已连接且无法恢复连接。

我们尝试过软件包版本1.1.17和1.2.1,并且两者都有相同的症状。

var clientFromConnectionString = require('azure-iot-device-mqtt').clientFromConnectionString;
var Message = require('azure-iot-device').Message;

var connectionString = 'xxx';

var client = clientFromConnectionString(connectionString);
var connectCallback = function (err) {
  if (err) {
    console.error('Could not connect: ' + err);
  } else {
    console.log('Client connected');
    var message = new Message('some data from my device');
    client.sendEvent(message, function (err) {
      if (err) console.log(err.toString());
    });

    client.on('message', function (msg) { 
      console.log(msg); 
      client.complete(msg, function () {
        console.log('completed');
      });
    });

    client.on('disconnect', function () { 
      console.log("disconnect");
    });
  }
};
client.open(connectCallback);

N.b我们需要MQTT,因为我们正在使用直接方法功能。

一旦断开连接,使用AMQP包,来自云的消息立即进入队列。

问题摘要:

  • MQTT消息在断开连接的前10-15秒内丢失(此后它们在云端排队)。
  • MQTT + AMQP客户端未检测到断开连接。

非常感谢任何建议。

谢谢, 大卫

0 个答案:

没有答案