MQTT - Mosquitto 01 설치하기
MQTT란 무엇인가?
MQTT(Message Queuing Telemetry Transport)는 다음과 같은 특징을 가진 경량 메시징 프로토콜입니다.
- 발행/구독(Publish/Subscribe) 모델:
MQTT는 중앙의 브로커(서버)를 통해 메시지를 발행(publish)하고, 특정 주제(topic)를 구독(subscribe)하는 클라이언트들 간에 메시지를 중개합니다. 이 구조는 클라이언트 간의 직접적인 연결 없이도 효율적인 통신이 가능하게 합니다. - 경량성과 효율성:
작은 코드 풋프린트와 낮은 대역폭 사용량으로 설계되어, 배터리나 네트워크 리소스가 제한된 IoT(사물인터넷) 환경에 적합합니다. - 신뢰성 및 품질 보증(QoS) 수준:
MQTT는 메시지 전송에 대해 0(최소 한 번도 보장하지 않음), 1(최소 한 번 전달 보장), 2(한 번만 전달 보장)와 같은 다양한 QoS 수준을 제공합니다. 이를 통해 네트워크 상황에 따라 적절한 신뢰성 보장이 가능합니다. - 네트워크 환경 적응성:
불안정하거나 대기 시간이 긴 네트워크 환경에서도 안정적인 메시징이 가능하도록 설계되었습니다.
이러한 특성 덕분에 MQTT는 센서 데이터 수집, 원격 제어, 홈 자동화 등 다양한 IoT 애플리케이션에서 널리 사용됩니다.
Mosquitto란 무엇인가?
Mosquitto는 MQTT 프로토콜을 구현한 오픈 소스 메시지 브로커로, 아래와 같은 특징을 가지고 있습니다.
- 오픈 소스 및 경량 브로커:
Mosquitto는 MQTT의 핵심 기능을 충실히 구현하면서도, 시스템 자원을 적게 소모하도록 설계되어 있습니다. 이러한 특성 덕분에 Raspberry Pi와 같은 저전력 디바이스나 클라우드 서버 등 다양한 환경에서 사용이 용이합니다. - 다양한 플랫폼 지원:
Linux, Windows, macOS 등 여러 운영체제에서 실행할 수 있으며, 소규모 개인 프로젝트부터 대규모 IoT 시스템까지 폭넓게 활용할 수 있습니다. - 안정적이고 확장 가능한 구조:
Mosquitto는 클라이언트로부터 수신한 메시지를 적절히 분배하여 구독자에게 전달하는 역할을 합니다. 또한, TLS를 통한 보안 연결, 사용자 인증 및 권한 관리 등의 기능도 제공하여 안전한 통신 환경을 구축할 수 있습니다. - 광범위한 커뮤니티 및 문서:
오픈 소스 프로젝트로서 활발한 개발과 사용자 커뮤니티가 존재하며, 다양한 문서와 예제 코드가 제공되어 쉽게 시작할 수 있습니다.
결론적으로, Mosquitto는 MQTT 기반 통신 환경을 빠르고 쉽게 구축할 수 있도록 도와주는 핵심 도구이며, IoT 시스템에서 메시지 중개자로 널리 사용되고 있습니다.
Mosquitto 다운로드하기
https://mosquitto.org/download/
Download
Source mosquitto-2.0.20.tar.gz (GPG signature) Git source code repository (github.com) Older downloads are available at https://mosquitto.org/files/ Binary Installation The binary packages listed be
mosquitto.org
링크에 들어가서 본인 OS에 맞는 파일을 다운로드 한다.
필자는 mosquitto-2.0.20-install-windows-x64.exe 를 다운로드하였다.
1. Mosquitto 브로커 실행
- 명령 프롬프트(cmd) 열기:
Mosquitto가 설치된 경로(예: C:\Program Files\mosquitto)로 이동합니다. - 브로커 실행:
아래 명령어를 입력하여 브로커를 verbose 모드로 실행합니다.- 이 명령은 브로커가 시작되면서 클라이언트 연결 및 메시지 로그를 실시간으로 콘솔에 출력합니다.
- 만약 포트 충돌이나 권한 문제 등이 있다면 오류 메시지가 나타날 수 있습니다.
mosquitto.exe -v
// 만약 conf 파일을 통해 실행해야한다면
mosquitto.exe -c mosquitto.conf -v
실행(win + r) - cmd 을 실행시켜 mosquitto를 설치한 경로로 가서 mosquitto.exe -v 를 실행한다.
만약 위와 같이 Error가 뜬다면 작업관리자를 확인하거나, netstat -a 에서 해당 포트가 사용되고 있는 것은 아닌지 확인하고 죽여준다.
이렇게 나오면 일단 시작된 것이다.
2. 구독자(Subscriber) 실행
- 새 명령 프롬프트 창 열기:
동일한 컴퓨터 내에서 또 다른 cmd 창을 엽니다. - 구독 명령 실행:
다음 명령어로 특정 토픽(예: "test/topic")을 구독합니다.- -t 옵션은 구독할 토픽을 지정하며, -v 옵션은 토픽 이름과 함께 메시지를 출력합니다.
- 이 창은 앞으로 발행되는 메시지를 기다리게 됩니다.
mosquitto_sub -t "test/topic" -v
3. 발행자(Publisher) 실행
- 또 다른 명령 프롬프트 창 열기:
새로운 창을 열어 발행 테스트를 진행합니다. - 발행 명령 실행:
다음 명령어로 메시지를 발행합니다.- -t 옵션은 메시지를 발행할 토픽을 지정하며, -m 옵션은 발행할 메시지를 지정합니다.
- 발행 후, 구독자 창에 "Hello Mosquitto!" 메시지가 출력되는 것을 확인할 수 있습니다.
mosquitto_pub -t "test/topic" -m "Hello Mosquitto!"
4. 테스트 결과 확인
- 브로커 창:
클라이언트 연결 및 메시지 교환 내역이 출력됩니다. - 구독자 창:
발행된 메시지가 출력되어, 토픽 "test/topic"에 메시지가 도착했음을 확인할 수 있습니다.
이 과정을 통해 Mosquitto가 올바르게 설치되고 동작하는지 확인할 수 있습니다.
필요시 방화벽이나 네트워크 설정을 확인하여 로컬에서 클라이언트들이 브로커에 접속할 수 있도록 해주세요.