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" 对我来说工作稳定)。
我最近开始使用 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" 对我来说工作稳定)。