azure iothub 设备停止发送消息

azure iothub device stops sending messages

我最近开始使用 Azure-Iot-SDK,想知道如何调查此行为。 我的应用程序可以在一段时间内向 IoT 中心发送消息,但突然停止发送。没有错误或其他任何可以帮助我找到根本原因的东西。只需重新启动应用程序(准确地说是一项服务)就足以让它再次运行。

代码是这样的(在 DataChangedEvent 上):

try {    
    deviceClient = DeviceClient.Create(connectionString, x509Certificate, tType);
    Log("Start sending message")
    await deviceClient.SendEventAsync(message);
    DoLogging("Done sending!");
}
catch (Exception e)
{
    moreLogging("Error occurred");
}

"Done sending!" 消息以某种方式停止出现在日志中,但 "Start sending message" 不断出现。 有人对如何进行有任何建议吗?

SendEventAsync方法实现,

The async operation shall retry until time specified in OperationTimeoutInMilliseconds property expire or unrecoverable error(authentication or quota exceed) occurs.

所以检查OperationTimeoutInMilliseconds值,看超时后是否有错误发生。

同时,您可以通过注册这样的处理程序来监控连接状态:

deviceClient.SetConnectionStatusChangesHandler(ConnectionStatusChangeHandler);

处理程序可能如下所示:

                static void ConnectionStatusChangeHandler(ConnectionStatus status, ConnectionStatusChangeReason reason)
                {
                    Console.WriteLine();
                    Console.WriteLine("Connection Status Changed to {0}", status);
                    Console.WriteLine("Connection Status Changed Reason is {0}", reason);
                    Console.WriteLine();
                }

你可以试试这个方法看看有没有帮助:

   await deviceClient.SendEventAsync(eventMessage).ConfigureAwait(false);

如果您还没有解决超时问题,这里有一个提示:尝试 re-creating 另一个区域的 IoT 中心("West US" 对我来说工作稳定)。