Фильтрация перенаправленных сообщений MQTT
Вы можете использовать возможность фильтрации подписки сетки событий для фильтрации перенаправленных сообщений MQTT.
Фильтрация разделов
Вы можете отфильтровать разделы MQTT сообщений, отфильтровав свойство subject в схеме Cloud Event. Подписки сетки событий поддерживают бесплатную фильтрацию субъектов, указав начальное или конечное значение для субъекта. Например,
- Если каждое транспортное средство публикует свое расположение по своей собственной теме (транспортных средств/транспортных средств1/gps, транспортных средств/транспортных средств2/gps и т. д.), вы можете использовать фильтр: тема заканчивается "gps" для маршрутизации только всех сообщений о расположении.
- Если компьютеры из каждого раздела каждой фабрики публикуются в разделах, которые имитируют иерархию фабрики (например, factory1/area2/machine4/telemetry), можно использовать фильтр: тема начинается с "factory1/area2/" для маршрутизации только сообщений, принадлежащих фабрике1 и области 2 к определенной конечной точке. Эту конфигурацию можно реплицировать для маршрутизации сообщений из других фабрик или областей в разные конечные точки.
Вы также можете воспользоваться расширенными фильтрами подписки на события для фильтрации на основе раздела MQTT, используя фильтрацию по свойству субъекта в схеме облачных событий. Расширенные фильтры позволяют задавать более сложные фильтры, указывая оператор сравнения, ключ и значение.
Фильтрация полезных данных
Для сообщений MQTT версии 5 типа контента = application/json; charset=utf-8" или индикатор формата полезных данных=1, полезные данные будут пересылаться в объекте данных, и сообщение будет сериализовано как JSON (или строка JSON, если полезные данные не является JSON). Установка типа контента и (или) индикатора формата полезных данных позволяет фильтровать свойства полезных данных как переадресованное в поле данных как есть.
полезные данные JSON
Если вы отправляете полезные данные JSON, он будет сериализован в виде правильного JSON, и вы сможете фильтровать по каждому свойству в JSON, используя расширенную фильтрацию подписки на события.
Например, если вы отправляете следующие полезные данные:
{
"Temp": 70,
"humidity": 40
}
С помощью следующего фильтра можно отфильтровать все сообщения со значением температуры более 100:
"advancedFilters": [{
"operatorType": "NumberGreaterThan",
"key": "data.Temp",
"value": 100
}]
Полезные данные, отличные от JSON
Если вы отправляете полезные данные, отличные от JSON, которые по-прежнему являются UFT-8, она будет сериализована в виде строки JSON. Например, если отправить следующие полезные данные:
{
Hello Contoso.
}
Для фильтрации всех сообщений, включающих слово Contoso, можно использовать следующий фильтр:
"advancedFilters": [{
"operatorType": "StringContains",
"key": "data",
"value": "Contoso"
}]
Фильтрация обогащения
Обогащения добавляются в атрибуты маршрутизации CloudEvent, и их можно фильтровать с помощью расширенной фильтрации подписки на события.
Например, если вы добавили следующее обогащение:
{
"key": "clienttype",
"value": "${client.attributes.type}"
}
Для фильтрации всех сообщений, поступающих от клиентов типа "sensor", можно использовать следующий фильтр:
"advancedFilters": [{"
operatorType": "StringContains",
"key": "clienttype",
"value": "sensor"
}]
Дальнейшие действия
Дополнительные сведения о маршрутизации см. в следующих статьях:
Краткое руководство.
- Руководство. Маршрутизация сообщений MQTT в Центры событий Azure с помощью разделов пространства имен
- Руководство. Маршрутизация сообщений MQTT в Функции Azure с помощью пользовательских разделов