MQTT Protocol

개념

  • Message System 개념 애플리케이션은 중개자를 통해 목적지로 메시지를 공급한다. 애플리케이션은 메시지를 소비하기 위해 같은 목적지를 구독한다.

  • Message 개체 간의 교환 하는 데이터

  • Destination 메시지를 교환 하는데 사용되는 주소

  • Producer 메시지 공급 개체

  • Consumer 메시지의 목적지로 부터 소비하는 개체

  • Bloker 공급자로 부터 메지시를 받아서 소비자 들에게 메시지를 전할하는 개체 메시지는 참여자들 간의 결합도가 낮다는 것이다. 구성이 유연하다.

구독과 발행

  • 메시지 구독 모델 Point-to-Point : 공급개체가 보낸 메시지가 1명의 소비자개체에게 전달 Publish/Subscribe : 공급개체가 보낸 메시지를 관심있는 모든 소비자에게 전달

  • Message QoS At Most Once(0): 최대 한번 전달: 속도가 빠름 메시지 유실 가능 At Least Once(1): 최소 한번 전달: Bloker가 게시된 메시지를 소비자에게 최소 한번 전달, 메시지 중복 가능,네트워크 부하 발생 2*N At Exactly Once(2): 정확한 한번 전달: Bloker가 게시된 메시지를 소비자에게 정확하게 한번 전달을 보장, 메시지 유실이나 중복을 발생하지 않음, 속도가 느림 4*N

  • Message 수신

    • Message Subscribe : 메시지 구독

    관심 토픽을 구독한다. QoS를 지정한다.

    • Message UnSubscribe: 메시지 구독 해제

    관심 토픽을 해재 한다.

구조

  • Message 구조

    • mid: unsigned short 형 데이터며 메시지의 ID를 가리킨다.
    • topic: 메시지를 보내는 토픽의 이름, 구독 단위 , 여러개를 구독할수 있음
    • retained: 메시지를 보관할 것인지 말것인지 결정
    • payload: 메시지 페이로드는 바이너리 데이터를 담고 있다.
  • Message 수신

    • 토픽 와일드 카드
/ 토픽 레벨 구분자: 토픽 트리 내 레벨을 구분하는 데 사용 되며 토픽 공간에 계층적인 구조를 제공한다.
## 다중 레벨 와일드 카드: 토팩 내 여러 레벨을 일치 시키는 와일드 카드
+ 단일 레벨 와일드 카드: 단일 토픽 레벨만 일치 시키는 와일드 카드
  • 와일드 카드 사용
/group/dev/tag
/group/+/tag :모든 dev 가보낸 Tag 메시지에 관심 있을때
/group/# : 모든 Group 메시지에 관심 있을때
  • payLoad 객체
payloadBytes: ArrayBuffer 형태 데이터
payloadString: String 형태 데이터
comments powered by Disqus