次の方法で共有


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"
}]

次のステップ:

ルーティングの詳細については、次の記事を参照してください。

クイックスタート:

概念: