MQTT 프로토콜에 대하여, 그리고 mosquitto를 mqtt broker를 이용한 예시에 대해 공부한 것을 정리해보려고 합니다.
MQTT(Message Queueing Telemetry Transport) Protocol의 약어로, 2016년 국제 표준화된 발행-구독(Publish-Subscribe) 기반의 메시지 송수신 프로토콜입니다.
Pub-Sub 모델 기반의 구조이며, TCP/IP 위에서 동작합니다.
또한 굉장히 가볍고 효율적입니다. 하지만, 서비스 품질(QoS)는 떨어질 수 있습니다.
추가
MQTT broker로 mosquitto라는 오픈소스 메시징 브로커를 이용해 이 통신에 대해 더 알아보았습니다.
먼저 homebrew 로 mosquitto를 설치합니다.
brew install mosquitto
그 다음 mosquitto config 파일을 수정해주어야합니다.
/opt/homebrew/etc/mosquitto 의 위치에 mosquitto.conf 파일이 위치해있는데 (혹시 다를 수 있으니 참고)
여기에 다음을 추가해야합니다.
#mqtt
listener 1883 127.0.0.1
protocol mqtt
allow_anonymous true
allow_zero_length_clientid true
이를 설정하고 mosquitto를 재시작해야합니다!
다음은 제가 테스트 한 예시입니다.
토픽은 test1, test2가 있고
subscriber 1,2 는 test1 을 구독합니다.
subscriber 3은 test2 를 구독합니다.
publisher가 토픽 test1에 대한 메시지를 발행하면 subscriber1, 2가 해당 메시지를 받게 되고
publisher가 토픽 test2에 대한 메시지를 발행하면 subscriber3이 해당 메시지를 받게됩니다.
예시는 다음과 같습니다.
mqtt broker 서버를 키고,
subscriber1,2 가 test1 토픽을 구독하고, subscriber3이 test2 토픽을 구독합니다.
그러면 다음과 같이 서버 창에 New client connected from 127.0.0.1: .. 와 같이 subscriber가 연결이 된 것을 확인할 수 있습니다
publisher가 test1 토픽에 대해 메시지 1, 메시지 2, 메시지 3 을 발행하고
test2 토픽에 대해서는 메시지 4, 메시지 5를 발행합니다.
broker는 test1 토픽을 구독한 subscriber1,2 에게 해당 메시지 1,2,3 을 전달하고, test2 토픽을 구독한 subscribe3에게 메시지 4,5를 전달합니다.
간단하게 mosquitto broker만 통해서 MQTT 통신을 확인해보았는데,
다음 번에는 코드를 이용해서도 직접 확인해봐야겠습니다 ㅎㅎ
잘 보고 갑니다