MQTT는 Message Queuing Telemetry Transport의 약자로서 1999년 IBM과 Eurotech(Arcom)에 의해 최초로 개발되었다. 초창기에는 원격검침의 용도로 만들었다. 원격검침의 경우 대부분 저전력 배터리 등 제한적인 특정 환경에서 동작하기 때문에 낮은 전력, 낮은 대역폭 환경에서 사용할 수 있도록 설계되었다. 이러한 점 때문에 IoT에 사용하기 유용하다.
QOS(Quality Of Service)를 0,1,2로 나눈다.
MQTT는 publish/subscribe/broker를 사용하는 프로토콜로서 subscriber는 토픽을 구독하기 위한 목적으로, publisher는 토픽을 발행하는 목적으로 broker와 연결하게 된다.
토픽은 /로 구분 지어 계층으로 관리할 수 있기 때문에 다수의 센서를 관리하기 용이하다.
MQTT는 메시지 버스 시스템으로서 MQTT Broker가 메시지 버스를 만들고, 여기에 메시지를 흘려보내면, 버스에 붙은 애플리케이션들이 메시지를 읽어가는 방식이다. 메시지 버스에는 다양한 주제의 메시지들이 흐를 수 있는데, 메시지를 구분하기 위해서 “Topic”을 이름으로 하는 메시지 채널을 만든다.
TCP/IP를 통해 실행되어 기본 네트워크 연결을 제공한다.
MQTT Broker : MQTT 서버라고 하지 않고 중개인이라고 하는 이유는 MQTT가 Pub(발행인)과 Sub(구독자)가 메시지를 주고받을 수 있도록 다리를 놔주는 역할만 하기 때문이다. 다양한 종류의 브로커들이 있다.
MQTT Client : MQTT on Android, MQTT on Android, Eclipse Paho 등의 라이브러리를 이용하여 다양한 운영체제를 지원한다.
https://github.com/mqtt/mqtt.github.io/wiki/server-support
https://github.com/mqtt/mqtt.github.io/wiki/tools https://github.com/mqtt/mqtt.github.io/wiki/server-support https://www.joinc.co.kr/w/man/12/MQTT/Tutorial https://www.ibm.com/support/knowledgecenter/ko/SSFKSJ_7.5.0/com.ibm.mm.tc.doc/tc60340_.htm http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html#_Table_2.2_- https://www.eclipse.org/paho/ https://mosquitto.org/ https://www.joinc.co.kr/w/man/12/MQTT/Cluster