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 開発サポートチーム 津田