azure 物联网枢纽消息反馈是否绝对确认?

jm81lzqq  于 2023-02-05  发布在  其他
关注(0)|答案(2)|浏览(119)

我正在使用Azure功能,通过IoT集线器向少数设备发送数据。我正在尝试记录整个过程,但我不确定我目前的解决方案是否足够。
到目前为止,我使用消息反馈(如文档中所述)来记录设备是否收到发送消息。

  • “物联网集线器不生成反馈消息。如果云到设备消息达到”已完成“状态,物联网集线器将生成反馈消息。"* 据我所知,如果我收到所述反馈,则表示确认设备已成功/未成功接收消息。

我的理解是,这是绝对确认消息是否被设备正确接收?还是有另一个选项来获得确认?

aamkag61

aamkag611#

我建议通读"接收云到设备交付反馈"一节以更好地理解这一点。该节解释了如何设置确认反馈选项。Azure IoT Hub在正面和负面两种情况下都提供反馈。
如果您使用以下代码commandMessage.Ack = DeliveryAcknowledgement.Full;将消息Ack设置为full(如本文所示),则在 * Completed * 和 * Dead letter * 两种情况下(肯定和否定结果)都将收到消息。

如果您专门针对成功消息,则需要将确认设置为***肯定***。然后您收到的反馈是一个确认,证明设备已成功接收消息。
希望这有帮助!

k97glaaz

k97glaaz2#

我按照以下步骤使用Azure功能向物联网设备发送消息。
其他答案请发送至@LeelaRajesh_Sayana。

  • 创建IoT集线器并添加设备

  • 添加设备名称并单击"Save

  • 选择您创建的设备并单击发送消息

  • 输入要发送的消息

  • 为了创建一个特定的条件,我们编写了代码。我使用了C#函数时间触发器来发送消息IoT Hub消息,并添加了以下条件。
try
{ 
    log.Loginformation($"Message sent : {message}");
}
catch (Exception ex)
{
    log.LogError($"Error sending message :{ex.Message});
}
using System;
using Microsoft.Azure.Devices;
using Microsoft.Azure.WebJobs;
using Microsoft.Extensions.Logging;

namespace AzureFunctionIoT
{
    public static class SendMessageToIoTDevices
    {
        [FunctionName("SendMessageToIoTDevices")]
        public static void Run([TimerTrigger("0 0 0 * * *")]TimerInfo myTimer, ILogger log)
        {
            string connectionString = Environment.GetEnvironmentVariable("IoTHubConnectionString");
            ServiceClient serviceClient = ServiceClient.CreateFromConnectionString(connectionString);
            
            var message = new Microsoft.Azure.Devices.Message(System.Text.Encoding.ASCII.GetBytes("Hello IoT Devices"));
            serviceClient.SendAsync("<DeviceId>", message).GetAwaiter().GetResult();
            
            log.LogInformation("Message sent successfully");
        }
    }
}

Run the messages with Azure IoT Hub (.NET) Code

相关问题