MQTT 라우트된 메시지 필터링

Event Grid 구독의 필터링 기능을 사용하여 라우트된 MQTT 메시지를 필터링할 수 있습니다.

토픽 필터링

클라우드 이벤트 스키마의 "제목" 속성에 대한 필터링을 통해 메시지의 MQTT 토픽을 필터링할 수 있습니다. Event Grid 구독은 제목에 대한 시작 또는 끝 값을 지정하여 자유로운 단순 제목 필터링을 지원합니다. 예를 들면 다음과 같습니다.

  • 각 차량이 자체 토픽(vehicles/vehicle1/gps, vehicles/vehicle2/gps 등)에 해당 위치를 게시하는 경우 필터를 사용할 수 있습니다. 제목은 모든 위치 메시지만 라우팅하는 "gps"로 끝납니다.
  • 각 팩터리의 각 섹션에 있는 컴퓨터가 팩터리 계층 구조를 모방하는 토픽(예: factory1/area2/machine4/telemetry)에 게시하는 경우 필터를 사용할 수 있습니다. 제목은 "factory1/area2/"로 시작하여 facotry1 및 area 2에 속하는 메시지만 특정 엔드포인트로 라우팅합니다. 이 구성을 복제하여 다른 팩터리/영역에서 다른 엔드포인트로 메시지를 라우팅할 수 있습니다.

이벤트 구독의 고급 필터링을 활용하여 클라우드 이벤트 스키마의 제목 속성 필터링을 통해 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}"
}

다음 필터를 사용하여 "센서" 유형의 클라이언트에서 오는 모든 메시지를 필터링할 수 있습니다.

"advancedFilters": [{"
    operatorType": "StringContains",
    "key": "clienttype", 
    "value": "sensor"
}]

다음 단계:

다음 문서에서 라우팅에 대해 자세히 알아봅니다.

빠른 시작:

개념: