Mqtt プロトコルでのメッセージ プロパティとメッセージ システム プロパティの受信に問題があります。ただし、TransportType.Amqp を使用すると問題なく動作します。
このページの「メッセージの受信」セクションに説明がありますか? https://azure.microsoft.com/da-dk/documentation/articles/iot-hub-mqtt-support/ はいの場合、それはどういう意味で、どのようにすればよいですか?
レシーバー コード: nuget とすべての依存関係から Microsoft.Azure.Devices.Client の 1.0.12 を使用しています。
//connectString: HostName=<host name>;DeviceId=<device id>;SharedAccessKey=<key>
//var deviceClient = DeviceClient.CreateFromConnectionString(connectString,TransportType.Amqp);
var deviceClient = DeviceClient.CreateFromConnectionString(connectString, TransportType.Mqtt);
while (true)
{
var message = await deviceClient.ReceiveAsync(TimeSpan.FromSeconds(2));
if (message != null)
{
//message.MessageId is null on Mqtt but not for Amqp!
}
}
送信者コード: Microsoft.Azure.Devices.dll のバージョン 1.0.11 を使用しています
string messageId = Guid.NewGuid().ToString("D");
var iotHubConnection = "HostName=<host>;SharedAccessKeyName=<...>;SharedAccessKey=<...>";
var serviceClient = ServiceClient.CreateFromConnectionString(iotHubConnection);
if (serviceClient == null) throw new Exception("ServiceClient create failed");
var serviceMessage = new Microsoft.Azure.Devices.Message(Encoding.UTF8.GetBytes("Hello World"));
serviceMessage.Ack = DeliveryAcknowledgement.Full;
serviceMessage.MessageId = messageId;
serviceMessage.Properties["message-id"] = messageId;
serviceClient.SendAsync("0123", serviceMessage).Wait();
C サンプル コードはプロパティを読み取りますが、 csharpサンプル コードは読み取りません。