amqp を使用して、IoT デバイスから Azure IoTHub にメッセージを送信しています。C# でプログラムを書いていますが、デバイスが iot ハブとの接続を確立できるかどうかを確認したいと考えています。これを達成する最良の方法は何ですか?コールバック関数を作成することは可能ですか?
私のデバイスの 1 つがクローズド ネットワーク上にあることに気付きました。つまり、amqp ポートがブロックされています。しかし、デバイスは IoT Hub にメッセージを送信していることをログに記録し (例外はスローされません)、Iot Hub を確認すると、メッセージが受信されていません。これが、デバイスが IoT Hub との接続を確立できるかどうかを確認したい理由です。
Java SDK には eventcallback クラスがありますが、C# にはありません。何か不足していますか?
protected static class EventCallback implements IotHubEventCallback {
public void execute(IotHubStatusCode status, Object context) {
System.out.println("IoT Hub responded to message with status " + status.name());
}
}
編集:これは良い実装でしょうか?
try {
client = DeviceClient.CreateFromConnectionString("***", TransportType.Amqp);
var task = client.OpenAsync();
task.Wait(30000); // wait for 30 sec
if (task.IsCompleted) {
Console.WriteLine("Connected");
await client.CloseAsync();
}
else {
throw new Exception("Time out");
}
}
catch (Exception e) {
Console.WriteLine("Error");
}