MQTT 클라이언트

이 문서에서는 MQTT 클라이언트 및 클라이언트 그룹을 구성하는 방법에 대해 알아봅니다.

클라이언트

클라이언트는 MQTT 메시지를 보내고 받는 디바이스나 차량과 같은 디바이스 또는 애플리케이션일 수 있습니다.

예를 들어 수백 대의 트럭 및 기타 배송 배달 차량을 보유한 차량 관리 회사를 생각해 보세요. 클라우드 서비스와 MQTT 메시지를 주고받으면 라우팅, 추적, 운전자 안전, 예측 가능한 유지 관리 기능을 향상시킬 수 있습니다.

이 시나리오에서는 차량을 날씨 정보, 도로 상태, 지리적 위치, 엔진 성능 및 차량의 기타 마모 측면과 같은 다양한 토픽을 게시/구독하는 클라이언트로 구성할 수 있습니다. 또한 차량을 클라이언트로 구성하면서 차량 유형, 연도, 제조사 및 모델, 최대 부하 용량 등과 같은 특성 집합도 클라이언트 메타데이터에 포함할 수 있습니다.

참고 항목

  • 클라이언트 이름은 1~128자 길이로 지정할 수 있습니다.
  • 클라이언트 이름에는 공백이 없는 영숫자, 하이픈(-), 콜론(:), 점(.), 밑줄(_)이 포함될 수 있습니다. 대/소문자를 구분하며 네임스페이스별로 고유해야 합니다.

클라이언트 메타데이터의 주요 용어

클라이언트 인증 이름: Azure Resource Manager 명명 제약 조건 없이 클라이언트에 대한 고유 식별자를 제공할 수 있습니다. 필수 필드이며 명시적으로 제공되지 않으면 기본적으로 클라이언트 이름으로 설정됩니다.

두 클라이언트가 네임스페이스 내에서 동일한 인증 이름을 가질 수 없습니다. 클라이언트를 인증하는 동안 클라이언트 인증 이름은 대/소문자를 구분하지 않는 상태로 처리됩니다.

클라이언트에서 구성하는 클라이언트 인증 이름의 원래 대/소문자는 유지됩니다. 클라이언트를 만들 때 제공된 원래 클라이언트 인증 이름(대/소문자 구분)은 라우팅 보강, 토픽 공간 일치 등에 사용됩니다.

참고 항목

  • 클라이언트 인증 이름은 1~128자 길이로 UTf-8 문자열을 사용하여 제한 없이 지정할 수 있습니다.
  • 클라이언트 인증 이름은 대/소문자를 구분하며 네임스페이스별로 고유해야 합니다(고유성을 확인하는 동안 대/소문자는 무시됨).

클라이언트 인증서 인증 유효성 검사 체계: 인증에 CA 인증서를 사용하려면 다음 옵션 중 하나를 선택하여 클라이언트 인증서에서 클라이언트 ID의 위치를 지정할 수 있습니다. 클라이언트가 서비스에 연결하려고 하면 서비스는 이 인증서 필드에서 클라이언트 ID를 찾고 이를 클라이언트 인증 이름과 일치시켜 클라이언트를 인증합니다.

다음 5개의 인증서 필드가 지원됩니다.

  • 주체가 인증 이름과 일치
  • Dns가 인증 이름과 일치
  • Uri가 인증 이름과 일치
  • IP가 인증 이름과 일치
  • 이메일이 인증 이름과 일치

자체 서명된 인증서를 사용하여 클라이언트를 인증하는 동안 "지문 일치" 옵션을 사용합니다.

참고 항목

  • clientCertificateAuthentication은 validationScheme의 유효한 값과 함께 항상 필요합니다.
  • authenticationName은 필수가 아니지만 첫 번째 만들기 요청 후에 authenticationName 값이 기본적으로 ARM 이름으로 설정되며 이후에는 업데이트할 수 없습니다.
  • authenticationName은 업데이트할 수 없습니다.
  • validationScheme이 ThumbprintMatch가 아닌 다른 값인 경우 allowedThumbprints 목록이 제공되지 않습니다.
  • allowedThumbprints 목록은 validationScheme이 지문이 하나 이상 있는 ThumbprintMatch인 경우에만 제공될 수 있으며 그래야만 합니다.
  • allowedThumbprints는 최대 2개의 지문만 보유할 수 있습니다.
  • 허용되는 validationScheme 값은 SubjectMatchesAuthenticationName, DnsMatchesAuthenticationName, UriMatchesAuthenticationName, IpMatchesAuthenticationName, EmailMatchesAuthenticationName, ThumbprintMatch입니다.
  • 지문을 사용하면 여러 클라이언트에서 동일한 인증서를 재사용할 수 있습니다. 다른 유효성 검사 유형의 경우 인증 이름이 클라이언트 인증서의 선택한 필드에 있어야 합니다.

클라이언트 특성

클라이언트 특성은 클라이언트에 대한 정보를 제공하는 사용자 정의 키-값 쌍 또는 태그 집합입니다.

이러한 클라이언트 특성을 사용하여 클라이언트 그룹을 만들 수 있습니다. 예를 들어 화물차 유형의 모든 차량을 한 그룹으로 그룹화하고 소형 트럭 유형의 모든 차량을 또 다른 한 그룹으로 그룹화할 수 있습니다.

이러한 특성은 클라이언트 그룹 쿼리에서 클라이언트 집합을 필터링하는 데 사용됩니다. 특성은 클라이언트의 물리적 또는 기능적 특성을 설명할 수 있습니다. 일반적인 특성으로는 클라이언트의 "유형"을 들 수 있습니다.

예를 들면 다음과 같습니다.

  • 유형: "센서" 또는 "자동 온도 조절기" 또는 "차량"과 같은 값일 수 있습니다.

특성 정의가 있는 클라이언트에 대한 샘플 스키마는 다음과 같습니다.

{  
    "id": "device123",  
    "attributes": {  
        "type": "home-sensors",
        "sensors": ["motion", "noise", "light"]
     }
}

클라이언트 특성을 구성하는 동안 클라이언트가 게시(구독)하는 토픽을 고려하세요. 토픽에서 클라이언트로 거꾸로 생각하면 클라이언트 역할 간의 공통점을 더 쉽게 식별하고 클라이언트 특성을 정의해 클라이언트 그룹화를 더 간편하게 만드는 데 도움이 됩니다.

참고 항목

  • 클라이언트 특성 키는 클라이언트에서 고유해야 합니다. 키는 반복될 수 없습니다.
  • 클라이언트 특성 값은 string, integer 또는 array of strings 형식일 수 있습니다.
  • 클라이언트에 대한 클라이언트 특성의 총 크기는 항상 4KB 미만이어야 합니다.
  • 클라이언트 특성 이름(키)에는 영숫자 문자와 밑줄(_)만 포함할 수 있습니다.

샘플 계약

인증서 체인 기반 클라이언트 인증의 예

{
    "properties": {
        "authenticationName": "127.0.0.1",
        "state": "Enabled",
        "clientCertificateAuthentication": {
            "validationScheme": "IpMatchesAuthenticationName"
        },
        "attributes": {
            "room": "345",
            "floor": 3,
            "bldg": "17"
        },
        "description": "Description of the client"
    }
}

자체 서명된 인증서 지문 기반 클라이언트 인증의 예

{
    "properties": {
        "authenticationName": "abcd@domain.com-1",
        "state": "Enabled",
        "clientCertificateAuthentication": {
            "validationScheme": "ThumbprintMatch",
            "allowedThumbprints": ["primary", "secondary"]
        },
        "attributes": {
            "room": "345",
            "floor": "3",
            "bldg": 17
        },
        "description": "Description of the client"
    }
}

Azure Portal 구성

다음 단계를 사용하여 클라이언트를 만듭니다.

  1. Azure Portal에서 네임스페이스로 이동합니다.

  2. 클라이언트에서 + 클라이언트를 선택합니다.

    Screenshot of adding a client.

  3. 클라이언트 인증서 인증 유효성 검사 체계를 선택합니다. 클라이언트 인증 구성에 대한 자세한 내용은 클라이언트 인증 문서를 참조하세요.

  • 클라이언트 특성을 추가합니다.

    Screenshot of client configuration.

  1. 만들기를 선택합니다.

Azure CLI 구성

다음 명령을 사용하여 클라이언트를 생성/표시/삭제합니다.

클라이언트 만들기

az eventgrid namespace client create -g myRG --namespace-name myNS -n myClient

클라이언트 가져오기

az eventgrid namespace client show -g myRG --namespace-name myNS -n myClient

클라이언트 삭제

az eventgrid namespace client delete -g myRG --namespace-name myNS -n myClient

다음 단계