IoT Hub のデバイスからクラウドへの最大メッセージサイズについて
IoT Hub のデバイスからクラウドへの最大メッセージサイズについては、以下ドキュメントで 256 KB と記載されておりますが、これについていただいたご質問と回答をご紹介します。
参照- IoT Hub のクォータと調整
/ja-jp/azure/iot-hub/iot-hub-devguide-quotas-throttling
デバイスからクラウドへのメッセージ
最大メッセージ サイズは 256 KB
Q1. このサイズを超えるとどういう挙動になりますか?
A1. 例外が発生します。
実際、弊社にて、SendEventAsync にて256 KB のバイト配列を送信する、以下のテスト用コードを実行したところ、「InvalidOperationException: Message size (262144 bytes) is too big to process. Maximum allowed payload size is 262143」という例外が発生いたしました。
private static async void SendDeviceToCloudMessagesAsync()
{
byte[] bs1 = new byte[256 * 1024];
var message = new Message(bs1);
await _deviceClient.SendEventAsync(message);
Console.WriteLine("{0} > Sending message", DateTime.Now);
}
Q2. IoT Hub のメッセージサイズの判断基準はどれでしょうか?(JSON 全体のサイズ、処理データ部分のサイズ、等)
A2. AMQP やMQTT といったプロトコルを使用してIoT Hub にメッセージを送信する際のペイロードのサイズとなります。
C# SDK をご利用の場合は SendEventAsync メソッドの引数に与えるデータのサイズです。
上記A1. のコード例の通り、256 KB (= 262144 バイト) のサイズのバイト列を、SendEventAsync メソッドの引数に与えるデータのサイズとして入力することで、例外が発生します。
上記の内容がお役に立てば幸いです。
Azure IoT 開発サポートチーム 津田