MQTT

MQTT(메시지 큐잉 텔레메트리 트랜스포트, Message Queuing Telemetry Transport)는 ISO 표준(ISO/IEC PRF 20922) 발행-구독 기반의 메시징 프로토콜이다. TCP/IP 프로토콜 위에서 동작한다. '작은 코드 공간'(small code footprint)이 필요하거나 네트워크 대역폭이 제한되는 원격 위치와의 연결을 위해 설계되어 있다. 발행-구독 메시징 패턴은 메시지 브로커가 필요하다.

IBM의 과 시러스 링크(Cirrus Link)의 알렌 니퍼(Arlen Nipper)가 1999년 이 프로토콜의 최초 버전을 만들었다.

2013년, IBM은 MQTT v3.1을 OASIS 표준화 단체에 제출하였다. MQTT-SN은 직비와 같은 비 TCP/IP 네트워크의 임베디드 장치에 초점을 둔 메인 프로토콜의 일종이다.

역사적으로, MQTT의 MQ는 IBM 웹스피어 MQ(당시 'MQSeries') 메시지 큐 제품 계열에서 비롯된 것이다. 그러나 모든 상황에서 표준 기능으로서 큐잉 그 자체를 지원하는 것은 필수가 아니다.

 메시지 유형 
 연결하기 
섬네일|right|300px|MQTT 연결의 예 (QoS 0). retain 플래그로 인해 클라이언트 B로부터의 최초 메시지가 저장된다.
서버와의 연결 수립을 기다린 다음 노드 간 링크를 만든다.

 연결 끊기 
MQTT 클라이언트가 해야 할 일을 기다리고 인터넷 프로토콜 스위트 세션의 연결이 끊어지기를 기다린다.

 발행하기 
MQTT 클라이언트에 요청이 전달된 직후 애플리케이션 스레드에 즉시 반환한다.

 서비스 품질 (QoS) 

브로커에 대한 각 연결은 QoS 기준을 지정할 수 있다. 부하가 늘어나는 순서에 따라 다음과 같이 분류된다:
 최대 한 차례 - 메시지는 한 번만 보내면 클라이언트와 브로커는 전달 확인 응답을 위한 추가 단계를 밟지 않는다. (보낸 다음 잊어버림)
 최소 한 차례 - 메시지는 확인 응답을 수신할 때까지 여러 번 송신자로부터 재시도된다. (확인 응답을 거치는 전달)
 정확히 한 번 - 송신자와 수신자는 2단계 핸드셰이크에 참여함으로써 오직 하나의 메시지 사본만을 수신하는 것을 보장한다. (보장된 전달)
이 필드는 기반이 되는 TCP 데이터 전송의 처리에 영향을 주지 않으며, MQTT 송신자와 수신자 간에만 사용된다.

 같이 보기 
 RabbitMQ
 AMQP

 각주 

 외부 링크 


분류:응용 계층 프로토콜
분류:데이터 전송
MQ
분류:메시지 지향 미들웨어
분류:네트워크 프로토콜