azure iothub设备停止发送消息

时间:2018-04-05 14:18:49

标签: azure asynchronous azure-iot-sdk

我最近开始使用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");
}

以某种方式"完成发送!"消息停止出现在日志中,但是"开始发送消息"不断前来。 有没有人有任何建议如何进行?

2 个答案:

答案 0 :(得分:0)

SendEventAsync方法实施,

  

异步操作应重试,直到指定时间为止   OperationTimeoutInMilliseconds属性过期或不可恢复   发生错误(身份验证或配额超出)。

因此请检查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);

答案 1 :(得分:0)

如果您还没有解决超时问题,那么这里有个提示:尝试在另一个区域重新创建IoT中心(“美国西部”对我来说很稳定)。