MQTT(Message Queuing Telemetry Transport)는 broker를 통해 subscription - publish 구조의 메세지 통신을 지원하며 QoS(Quality of Service)를 지원한다. 작성일 기준 5.0버전까지 존재한다.
Mosquitto : 서버 이중화로 인한 메세지 큐 문제로 EMQ로 변경하여 사용하였음
EMQ : clustering 대신 shared subscription 을 통해 이중화 문제 해결
> **Clustering**
> 노드간 발행 / 구독 관계를 공유하여 부하를 감소시킨다.
>![Clustering](https://i.imgur.com/m9vrJjb.png)
> **Shared subscription**
> 기존에 구독되어있는 사람 모두에게 메세지가 전달 되는 상황을 순차적으로 입력받은 메세지를 하나의 구독자에게만 전달한다.
> ![Shared subscription](https://i.imgur.com/CMdS4zS.png)
대상 | Topic |
---|---|
A | home/livingroom/sensor1 |
B | home/kitchen |
C | home/kitchen/sensor1 |
D | home/kitchen/sensor2 |
E | home/# |
F | home/+/sensor1 |
Topic은 Publish 혹은 Subscription 할 대상을 지정합니다. /
을 구분자로 사용하여 각각의 Topic을 분리합니다. 와일드 카드로 +
와 #
가 있으며
Subscription이 A ~ D 까지 4개로 등록되어 있을때
송신Topic | 수신Topic |
---|---|
A | A |
B | B |
C | C |
D | D |
E | A, B, C, D |
F | A, C |
위와 같은 대상이 메세지를 Publish된 메세지를 수신할 수 있습니다.