MQTT: Message Queueing Telemetry Transport
- ISO(ISO표준 발행-구독(Publish-Subscribe)기반의 메시지 송수신 프로토콜
- IoT와 같이, 코드 공간 또는 네트워크 대역폭이 제한된 원격통신을 할때, 대규모 트래픽 전송을 위해 만들어진 프로토콜이다.
- TCP/IP 위에서 동작하고, 굉장히 가벼우며, 많은 통신 제약들을 해결해준다.
- WIFI통신시 주로 사용한다.
IoT / M2M 차이
- IoT: 사물 인터넷
- 인터넷에 연결되는 장치의 네트워크
- 환자의 심박수 센서를 환자의 옆에 있는 대화식 장치에 통합하여, 스마트폰으로 환자의 의사 또는 가족 구성원에게 알림을 전송하는 경우
- M2M(라우터): 사물 지능 통신
- 두 개 이상의 전자 장치 지원시스템(센서, 액추에이터, 내장형시스템, 연결소자 등)간에 자동화된 방법으로 통신하는 공정
- 의사에게 환자의 건강 관련 정보를 지속적으로 제공하기 위해 환자의 심박수를 모니터링하는 센서를 외부 장치 또는 의료기기 등급 서버에 연결
- 무선 연결 분야에서는 급속도로 발전하는 IoT의 고급 연결기술 및 솔루션을 동일하게 사용할 수 있다.
MQTT란?
- M2M, IoT를 위한 프로토콜
- 최소한의 전력과 패킷량으로 통신함
- IoT와 모바일 어플리케이션 등의 통신에 매우 적합함
- HTTP, TCP 등의 통신(클라이언트-서버 구조)과 다르게 Broker-Publisher-Subscriber 구조로 이루어짐
- Publisher: Topic을 발행(publish)
- Subscriber: Topic에 구독(subscribe)
-> 단일 Topic에 여러 Subscriber가 구독하면 1:N 통신 구축 가능
- Broker: 이들을 중계
- MQTT는 프로젝트 특성에 따라 QoS(Quality of Service) 단계를 정할 수 있음
- 0: 메시지 한번만 전달, 전달후 수신과정을 체크하지 않음
- 1: 메시지 한번이상 전달, 핸드셰이킹 과정을 느슨하게 추적하여 중복수신의 가능성이 있음
- 2: 메시지 한번만 전달, 핸드셰이킹의 모든 과정을 체크함
- 0~1 젇도의 QoS를 사용하며 메시지 손실의 위험은 상위 어플리케이션 차원에서 관리하는 방법이 널리 쓰이고 있다.
- 토픽 (Topic)
메시지를 발행-구독하는 행위는 채널 단위로 일어난다. 이를 MQTT에서는 토픽이라고 부르고, 토픽은 슬래시(/)로 구분되는 계층 구조를 갖는다.
company / firstFloor / SWoffice / temp
위 예시에서 슬래시 전후에 있는 office, firstFloor, SWoffice, temp는 모두 각각의 토픽 레벨(Topic Level)이며, 해당 토픽은 Topic Level Separator라고 불리는 슬래시로 구분된다.
즉, 위의 토픽은 회사 1층의 SW부서의 온도를 체크할 수 있는 토픽이다.
company / firstFloor / + / temp
위는 메시지를 구독-발행할 때 여러 개의 토픽을 한 번에 지정할 수 있도록 지원하는 와일드 카드의 예시이다.
[+] 문자는 One-Level Wild Card로, 단 한 개의 토픽을 임의의 토픽으로 대체할 수 있다.
즉, 위의 토픽은 회사 1층에 있는 모든 부서의 온도를 체크할 수 있는 토픽이다.
- MQTT 브로커
Mosquitto, HiveMQ, mosca, ActiveMQ, RabbitMQ(Plug-in 형태)
- Mosquitto(eclipse-mosquitto): doker 컨테이너에서 실행