MQTT ルーティング メッセージのフィルター処理
Event Grid サブスクリプションのフィルター機能を使用して、ルーティングされた MQTT メッセージをフィルター処理できます。
トピックのフィルター処理
クラウド イベント スキーマの "サブジェクト" プロパティをフィルター処理することで、メッセージの MQTT トピックをフィルター処理できます。 Event Grid サブスクリプションでは、サブジェクトの開始または終了値の指定による、無料の単純なサブジェクトのフィルター処理をサポートしています。 たとえば、オブジェクトに適用された
- 各車両が独自のトピック (vehicles/vehicle1/gps、vehicles/vehicle2/gps など) で位置情報を公開している場合、サブジェクトが "gps" で終わるフィルターを使用して、すべての位置情報メッセージのみをルーティングできます。
- 各工場の各セクションのマシンが、工場階層を模したトピック (factory1/area2/machine4/telemetry など) でパブリッシュしている場合、サブジェクトが "factory1/area2/" で始まるフィルターを使用して、facotry1 と area2 に属するメッセージのみを特定のエンドポイントにルーティングできます。 この構成をレプリケートして、他の工場/エリアから異なるエンドポイントにメッセージをルーティングできます。
また、イベント サブスクリプションの高度なフィルター処理を利用して、クラウド イベント スキーマの "サブジェクト" プロパティでフィルター処理することで、MQTT トピックに基づいてフィルター処理することもできます。 高度なフィルターを使用すると、比較演算子、キー、および値を指定して、より複雑なフィルターを設定できます。
ペイロードのフィルター処理
コンテンツ タイプが "application/json; charset=utf-8" またはペイロード形式インジケーターが 1 の MQTT v5 メッセージの場合、ペイロードはデータ オブジェクトに転送され、メッセージは JSON (ペイロードが JSON でない場合は JSON 文字列) としてシリアル化されます。 コンテンツ タイプとペイロード形式インジケーターまたはそのいずれかを設定すると、データ フィールド内でそのまま転送されるペイロード プロパティをフィルター処理できます。
JSON ペイロード
JSON ペイロードを送信すると、適切な JSON としてシリアル化され、イベント サブスクリプションの高度なフィルター処理を使用して、JSON 内の各プロパティでフィルター処理できます。
たとえば、次のペイロードを送信する場合:
{
"Temp": 70,
"humidity": 40
}
次のフィルターを使用すると、温度値が 100 を超えるすべてのメッセージをフィルター処理できます。
"advancedFilters": [{
"operatorType": "NumberGreaterThan",
"key": "data.Temp",
"value": 100
}]
JSON 以外のペイロード
UFT-8 のままの JSON 以外のペイロードを送信した場合、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 Event Hubs にルーティングする
- チュートリアル: カスタム トピックを使用して MQTT メッセージを Azure Functions にルーティングする