Ssup2 Blog logo Ssup2 Blog

MQ(Message Queue) Protocol인 MQTT(Message Queuing Telemetry Transport)를 분석한다.

1. MQTT (Message Queuing Telemetry Transport)

[그림 1] MQTT Architecture

MQTT는 IoT 환경같은 부족한 Resource 환경에서 이용되는 PUB(Publish)/SUB(Subscribe) 기반의 Messaging Protocol이다. [그림 1]은 MQTT를 간략하게 나타내고 있다. PUB/SUB은 Topic을 기준으로 동작한다. Publisher가 특정 Topic으로 Message를 Broker에게 전달하면 Broker는 해당 Topic을 구독하는 모든 Subscriber에게 Message를 전달한다. 따라서 MQTT는 AMQP와 다르게 Multicast 동작만을 수행한다.

1.1. Topic

[그림 2] MQTT Topic

[그림 2]는 MQTT의 Topic 구조를 나타내고 있다. Topic은 Directory 구조 처럼 /를 기준으로 계층 구조를 갖게 된다.

1.2. QoS

[그림 3] MQTT QoS

MQTT는 3단계의 QoS를 제공한다. [그림 3]은 QoS에 따른 Message 전달 및 ACK 과정을 나타내고 있다.

Level 0은 Subscriber에게 Message가 전달되는 것을 보장하지 못한다. Level 1은 Subscriber가 Message를 받는 것을 보장하지만, Subscriber가 여러번 동일 Message를 받을 수 있다. Level 1에서 Broker는 Publisher에게 ACK(PUBACK)가 전달 된 것을 확인 하지 않기 때문에, Publisher가 ACK(PUBACK)을 받지 못하면 한번더 동일 Message를 Broker에게 전송하기 때문이다. Level 2는 Level 1의 문제점이 해결되기 때문에 Subscriber가 Message를 한번 받는것을 보장한다.

2. 참조