Центр IoT Azure. Что происходит при отправке данных, если превышен дневной лимит сообщений? - PullRequest
3 голосов
/ 20 июня 2019

Мы используем IoT-концентратор Azure в качестве бэкэнда для нашего IoT-решения. Мы заметили, что у нас был неожиданный всплеск количества сообщений в течение одного дня, и мы превысили наш дневной лимит в 400 000 сообщений.

Из журналов клиентского приложения мы не смогли найти ничего необычного: на основании журналов кажется, что клиент продолжал отправлять данные, несмотря на превышение суточного лимита.

Итак, мой вопрос: что происходит, когда клиентское приложение отправляет данные, используя DeviceClient.SendEventBatchAsync, когда дневной лимит сообщений уже превышен? Сообщения просто хладнокровные, хотя исключений не было? Или происходит что-то, что я не смог уловить? Мы используем C # .NET Microsoft.Azure.Devices.Client версии 1.19.0 и отправляем данные по протоколу MQTT.

Ответы [ 2 ]

4 голосов
/ 20 июня 2019

Для поддержки пакетного трафика IoT Hub принимает запросы выше уровня газа в течение ограниченного времени.Первые несколько из этих запросов обрабатываются немедленно.Однако, если количество запросов продолжает нарушать настройку, IoT Hub начинает помещать запросы в очередь и обрабатывать их с предельной скоростью.Этот эффект называется формированием трафика.Кроме того, размер этой очереди ограничен.Если нарушение регулирования продолжается, в конечном итоге очередь заполняется, и IoT Hub начинает отклонять запросы с 429 ThrottlingException.

Например, вы используете смоделированное устройство для отправки 200 сообщений устройства в облако в секунду на S1Концентратор IoT (предел D2C которого составляет 100 / с).В течение первой или двух минут сообщения обрабатываются немедленно.Тем не менее, поскольку устройство продолжает отправлять больше сообщений, чем ограничение газа, IoT Hub начинает обрабатывать только 100 сообщений в секунду и помещает остальные в очередь.Вы начинаете замечать увеличение задержки.В конце концов, вы получаете 429 ThrottlingException, когда очередь заполняется, и «количество ошибок газа» в метриках IoT Hub начинает увеличиваться.

Согласно документам

Так что да, он упаковывается до тех пор, пока не начнет выдавать исключения, когда очередь заполнена.Вам следует уменьшить количество сообщений и рассмотреть возможность выбора библиотеки MQTT, которая поддерживает пакетирование на стороне клиента в случае пакетной передачи данных.

0 голосов
/ 20 июня 2019

Ваше устройство MQTT должно быть отключено, а операции Отправить и Получить для этого концентратора заблокированы до следующего дня UTC .

В случае использования протокола https следующий ответотправляется концентратором IOT Azure:

{
  "Message": "{\"errorCode\":403002,\"trackingId\":\"c41eb2a0f7764132aa31a7f3ff97a1ce-G:3-TimeStamp:06/20/2019 12:36:43\",\"message\":\"Total number of messages on IotHub 'xxxxxxxxx' exceeded the allocated quota. Max allowed message count : '8000', current message count : '8448'. Send and Receive operations are blocked for this hub until the next UTC day. Consider increasing the units for this hub to increase the quota.\",\"timestampUtc\":\"2019-06-20T12:36:43.5570129Z\"}",
  "ExceptionMessage": ""
}

Это для уровня шкалы F1, и оно должно быть одинаковым для любого уровня шкалы, когда превышены ежедневные выделенные операции отправки / получения сообщений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...