Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
API публикации HTTP-api службы "Сетка событий Azure" MQTT Broker позволяет клиентам публиковать сообщения телеметрии очереди сообщений (MQTT) с помощью стандартных HTTP-запросов. Эта возможность дополняет прямые клиентские подключения MQTT. Он предоставляет простой и масштабируемый вариант для серверных систем, которые предпочитают HTTP для команд и управления серверами и устройствами, обновления или управления сохраненными сообщениями.
Замечание
Эта функция сейчас доступна в предварительной версии.
Основные преимущества:
- Позволяет внутренним службам отправлять сообщения MQTT без открытия постоянных сеансов MQTT.
- Помогает защитить стабильность брокера путем ограничения сеансов MQTT для каждого клиента.
- Обеспечивает согласованную обработку сообщений, поступающих из MQTT и HTTP.
Когда следует использовать публикацию HTTP
Рекомендуется использовать HTTP Publish, когда:
- Внутренние службы являются собственными HTTP и должны отправлять команды устройства или обновления по MQTT.
- Вы хотите управлять сохраненными сообщениями без открытия подключения MQTT.
- Необходимо увеличить масштаб емкости публикации без исчерпания ограничений сеанса.
Принцип работы
- HTTP-клиенты выдают HTTP-запрос
POSTс подробными сведениями о публикации MQTT. - Сетка событий сопоставляет части HTTP-запроса со стандартными свойствами пакета MQTT PUBLISH.
- Сообщения передаются через конвейер маршрутизации и обогащения сетки событий, который обеспечивает гарантии доставки и применяет любое обогащение или преобразование.
Пример: эквивалент публикации MQTT
PUBLISH Topic Name: devices/CXa-23112/prompt
QoS: 1
RETAIN: 0
Response Topic: devices/CXa-23112/reply
Correlation Data: >U±¶¶»/
User Property: Urgency = alert
User Property: RequestId = 55f4a7ee-b0b4-4d7f-8eb5-2edba2ced5d7
Payload: Please accept terms of licensing and agreement
Пример: HTTP-запрос публикации
POST /mqtt/messages?topic=devices%2FCXa-23112%2Fprompt&api-version=2025-02-15-preview HTTP/1.1
Host: nsname.westus3-1.ts.eventgrid.azure.net
Authorization: Bearer <ENTRA_TOKEN_HERE>
mqtt-qos: 1
mqtt-retain: 0
mqtt-response-topic: devices%2FCXa-23112%2Freply
mqtt-correlation-data: PlXCscK2wrbCuy8=
mqtt-user-properties: W3siVXJnZW5jeSI6ImFsZXJ0In0seyJSZXF1ZXN0SWQiOiI1NWY0YTdlZS1iMGI0LTRkN2YtOGViNS0yZWRiYTJjZWQ1ZDcifV0=
Content-Type: text/plain;charset=UTF-8
Date: Sun, 06 Nov 1994 08:49:37 GMT
Content-Length: 46
Please accept terms of licensing and agreement
Параметры запроса
В следующей таблице описывается сопоставление частей HTTP-запроса с свойствами пакета MQTT PUBLISH. Полные сведения см. в исходной документации.
| Часть публикации MQTT | Тип и значения | Местоположение | Обязательно | Description |
|---|---|---|---|---|
| Имя раздела | Строка, закодированная в процентах | Запрос topic |
Да | Раздел MQTT для публикации в |
| Качество обслуживания | 0 или 1 | Запрос qos или заголовок mqtt-qos |
Нет [по умолчанию = 1] | Уровень качества обслуживания (QoS) |
RETAIN флаг |
0 или 1 | Запрос retain или заголовок mqtt-retain |
Нет [по умолчанию = 0] | Сохранение сообщения |
| Раздел ответа | Строка, закодированная в процентах | Заголовок mqtt-response-topic |
нет | Раздел ответа при необходимости |
| Данные корреляции | Строка Base64 | Заголовок mqtt-correlation-data |
нет | Дополнительные данные для отслеживания |
| Свойства пользователя | Массив JSON Base64 | Заголовок mqtt-user-properties |
нет | Пользовательские свойства пользователя |
| Тип контента | Струна | Заголовок content-type |
нет | Тип полезных данных |
| Интервал истечения срока действия сообщения | Целое число без знака | Заголовок mqtt-message-expiry |
нет | Период хранения в секундах |
| Индикатор формата полезных данных | 0 или 1 | Заголовок mqtt-payload-format-indicator |
Нет [по умолчанию = 0] | Индикатор форматирования |
| Полезная нагрузка | Bytes | Текст HTTP | нет | Текст сообщения |
Notes:
- Значения параметров запроса переопределяют значения заголовков, если они присутствуют.
- Для раздела и ответа требуется кодировка процента.
- Данные корреляции должны быть закодированы в кодировке Base64.
Высокоуровневые шаги по использованию публикации HTTP
- Подготовьте маркер носителя идентификатора Microsoft Entra для проверки подлинности.
- Создайте HTTP-запрос
POSTк конечной точке брокера MQTT Сетки событий. - Включите необходимые параметры запроса, например раздел.
- Добавьте необязательные заголовки для QoS, флага,
RETAINраздела ответа и свойств пользователя. - Добавьте полезные данные в текст HTTP.
- Отправьте запрос.
- Подтвердите доставку с помощью журналов и метрик на портале сетки событий.
Проверка подлинности и авторизация
- Http Publish использует идентификатор Microsoft Entra для проверки подлинности.
- Маркер носителя необходим в заголовке авторизации.
- Идентификатор объекта Microsoft Entra становится идентификатором клиента MQTT.
- Модель AuthN/AuthZ соответствует стандартным подключениям MQTT.
Маршрутизация и наблюдаемость
Метрики и журналы включают:
- Протокол:
http-publish - Идентификатор запроса
- Тема
- Исходный IP-адрес
- Субъект авторизации
Лучшие практики
- Используйте ключи заголовка нижнего регистра, где это возможно. Ключи заголовка HTTP/2 не учитывает регистр.
- Отслеживайте пропускную способность, так как HTTP-сообщения, как правило, больше, чем прямые сообщения MQTT.
- Обратите внимание, что ограничения пропускной способности публикации HTTP разделяются прямыми опубликованными сообщениями MQTT.
Ограничение скорости
Http Publish учитывает общую квоту пропускной способности MQTT. Отслеживайте использование, чтобы избежать превышения ограничений.