在iotHub云到设备队列

时间:2018-04-11 12:13:10

标签: c# node.js azure-iot-hub

我有一个node.js代码(设备端),用于侦听azure IotHub的设备队列上的消息。

在下一个场景中:

  1. 代码未运行
  2. 已将消息发送至设备。
  3. 代码开始运行并侦听队列。
  4. 设备没有从队列中读取旧消息,只要我发送新消息 - 它就会读取它。

    如何更改设备代码以收听旧信息?

1 个答案:

答案 0 :(得分:1)

您可以查看此文章以了解Azure IoT Hub Cloud-to-device Messaging。从显示IoT Hub中云到设备消息的生命周期状态图的图表中,IoT Hub在每个设备队列中保留云到设备消息。设备必须明确承认IoT Hub的完成才能将其从队列中删除。这种方法可以保证抵御连接和设备故障的弹性。

在介绍如何为node.js send cloud-to-device messages with IoT Hub的文档中,如果首先运行SendCloudToDeviceMessage.js,则消息将被排队,然后在运行SimulatedDevice.js时(请注意修改< strong> connectCallback 函数用完整方法处理邮件,客户端将收到邮件。

var connectCallback = function (err) {
if (err) {
  console.log('Could not connect: ' + err);
} else {
  console.log('Client connected');
  client.on('message', function (msg) {
      console.log('Id: ' + msg.messageId + ' Body: ' + msg.data);
      client.complete(msg, printResultFor('completed'));
    });
  }
};