티스토리 뷰
개요
Eclipse Mosquitto
는 MQTT 5 프로토콜을 지원하는 경량의 오픈 소스 MQTT Broker이다. 이번 글에서는 Eclipse Mosquitto을 실행하고,MQTT X
를 이용하여 특정 Topic을 구독하고 발행하는 예제를 소개하고자 한다.
준비물
docker
,docker-compose
: Eclipse Mosquitto을 도커 컨테이너로 실행하기 위해 필요하다. CentOS에서의 설치 방법은 본 블로그의 이 글을 참고한다.MQTT X
: 크로스 플랫폼을 지원하는 무료 오픈 소스 MQTT 데스크탑 클라이언트이다. 3.3.1과 5.0을 모두 지원한다. 여기를 클릭하여 설치한다.
Eclipse Mosquitto 설치 및 실행
- docker-compose를 이용하여 아래와 같이 docker-compose.yml 파일을 작성한다.
$ mkdir eclipse-mosquitto
$ cd eclipse-mosquitto
$ nano docker-compose.yml
version: '3.8'
services:
mosquitto:
image: "eclipse-mosquitto"
ports:
- "1883:1883"
- "9001:9001"
volumes:
- ./config/mosquitto.conf:/mosquitto/config/mosquitto.conf
- ./data:/mosquitto/data
- ./log:/mosquitto/log
restart: always
- Eclipse Mosquitto 실행에 필요한 디렉토리 및 설정 파일을 생성한다.
$ mkdir config
$ mkdir data
$ mkdir log
# 환경 설정 파일 작성
# 자동 개행 방식을 CR+LF가 아니라 LF로 저장해야 오류가 발생하지 않음
$ nano ./config/mosquitto.conf
persistence false
allow_anonymous true
connection_messages true
log_type all
listener 1883
- 모든 설정이 완료되었다. 아래와 같이 Eclipse Mosquitto를 실행한다.
# Eclipse Mosquitto 실행
$ docker-compose up
mosquitto_1 | 1634820280: mosquitto version 2.0.12 running
MQTT X를 이용한 메시지 전송 테스트
- 앞서 언급한
MQTT X
를 이용하면 카카오톡 또는 텔레 이용하는 느낌으로 - 앞서 설치한
MQTT X
를 실행하여 실행 중인 MQTT 브로커에 클라이언트로 연결한다.
MQTT X 실행
→ [+] 클릭
→ Host: mqtt://127.0.0.1 (입력)
→ Port: 1883 (입력)
→ [Connect] 클릭
- 연결이 완료되면
+ New Subscription
을 클릭하여 새로운 Topic을 구독할 수 있다. (한 번도 등록된 적이 없는 Topic을 구독할 경우 해당 토픽이 브로커에서 자동으로 생성된다.) 예시로 아래와 같은 Topic을 구독해보자.
Topic:
/home/light/1
- 이번에는 앞서 생성한 Topic에 대해 Payload를 전송해보자. Publish된 메시지와 Subscribe된 메시지를 동시에 확인할 수 있다.
Topic:
/home/light/1
Payload Type:
Plaintext
Payload:
on
Production-Ready를 위한 추가 고려 사항
- TLS 설정이 적용되지 않으면 브로커로 전송되는 모든 메시지를 중간에서 가로 채서 확인할 수 있다. (SSL 인증서를 설치하여 해결할 수 있다.)
- username과 password를 적용하여 인증된 클라이언트만 연결이 가능하도록 통제할 수 있다. 이 경우
allow_anonymous
값을false
로 변경하고,/etc/mosquitto/passwd
파일을 생성해야 한다.
참고 글
- The Complete MQTT Broker Selection Guide
- MQTT message broker for production
- Mosquitto MQTT Bridge -Usage and Configuration
- MQTT 버전 5 개요 2018년판
- MQTT Topic Naming Convention
- Secure MQTT broker (TLS) and Docker Compose
- The comparison of usual MQTT client tools in 2020
- How to Install and Secure the Mosquitto MQTT Messaging Broker on Debian 10
- Programmable Wireless: How to Run a Test MQTT Broker
- Stress-Testing MQTT Brokers: A Comparative Analysis of Performance Measurements
- MQTT used in production - a use case
댓글
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Spring MVC 3
- bootstrap
- CentOS
- jsp
- chrome
- 평속
- graylog
- 자전거
- java
- JavaScript
- Tomcat
- Eclipse
- 태그를 입력해 주세요.
- jpa
- MySQL
- kotlin
- Kendo UI Web Grid
- DynamoDB
- 로드바이크
- jstl
- Spring Boot
- Docker
- Kendo UI
- node.js
- 구동계
- spring
- 로드 바이크
- maven
- JHipster
- 알뜰폰
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함