MQTT
MQTT(MQ Telemetry Transport)는 경량 메시징 프로토콜로, 네트워크에 연결된 장치들 간의 효율적인 통신을 위해 설계되었습니다. 이 프로토콜은 IoT(Internet of Things) 및 M2M(Machine-to-Machine) 통신에서 널리 사용되며, 낮은 대역폭, 제한된 네트워크 리소스, 불안정한 네트워크 연결과 같은 제약 사항을 고려하여 개발되었습니다.
MQTT는 클라이언트-브로커-서버 모델을 따르며, 주로 발행-구독(pub-sub) 패턴을 사용하여 메시지를 전달합니다. 이 패턴은 여러 클라이언트가 메시지를 발행하고 해당 메시지를 구독하는 브로커를 통해 효율적으로 전달되는 것을 의미합니다.
특징
MQTT의 주요 특징은 다음과 같습니다:
- 경량성: MQTT는 간단하고 경량적인 프로토콜로, 메시지 헤더 크기가 작고 TCP/IP 연결을 최소화하여 대역폭을 절약합니다.
- 유연성: MQTT는 다양한 네트워크 및 플랫폼에서 사용할 수 있도록 설계되었습니다. 휴대폰, 임베디드 장치, 서버 등 다양한 환경에서 동작할 수 있습니다.
- 안정성: 불안정한 네트워크 연결에서도 메시지 전달을 보장하기 위해 QoS(Quality of Service) 레벨을 제공합니다. QoS 레벨은 메시지 전달의 신뢰성을 조절하는 데 사용됩니다.
- 확장성: MQTT는 수천 개의 동시 연결을 지원하며, 브로커 및 클라이언트 간의 효율적인 통신을 보장합니다.
- 보안성: MQTT는 TLS/SSL과 같은 보안 프로토콜을 지원하여 데이터의 안전한 전송을 보장합니다.
- 쉬운 구현: MQTT 클라이언트 및 브로커의 오픈 소스 구현이 다양하게 제공되며, 쉽게 사용할 수 있습니다.
MQTT는 위와 같이 Publisher , Broker, Subscriber의 역할로 나누어 작동이 됩니다.
Publisher에서는 Broker로 Publish 하고
Subscriber에서는 Broker에게 Subscribe 한 뒤에 Publish 받을 수 있습니다.
MQTT Broker 프로그램
여기서 MQTT Broker의 역할을 해주는 프로그램은 여러 종류가 있는데 이에 대해 알아보겠습니다.
각각의 프로그램은 다양한 기능과 특성을 제공하며, 사용 사례 및 요구 사항에 따라 선택할 수 있습니다.
아래에는 널리 사용되는 MQTT 브로커 프로그램과 각각의 장단점을 소개합니다.
- Mosquitto
- 장점:
- 오픈 소스이며 무료로 사용할 수 있습니다.
- 경량이며 빠르게 실행됩니다.
- 다양한 플랫폼에서 동작합니다.
- 안정적이고 신뢰성이 높습니다.
- 단점:
- 고급 기능이 상대적으로 제한적일 수 있습니다.
- 대규모 및 고성능 요구 사항에는 적합하지 않을 수 있습니다.
- 장점:
- EMQ
- 장점:
- 분산 아키텍처를 지원하여 확장성이 뛰어납니다.
- 높은 처리량과 대규모 연결을 지원합니다.
- 클러스터링 및 고가용성 기능을 제공합니다.
- 다양한 보안 기능을 제공합니다.
- 단점:
- 설정 및 관리가 다소 복잡할 수 있습니다.
- 자원 사용량이 많을 수 있습니다.
- 장점:
- HiveMQ
- 장점:
- 높은 성능과 확장성을 제공합니다.
- 클러스터링 및 로드 밸런싱을 지원하여 고가용성을 보장합니다.
- 상용 및 오픈 소스 라이선스 모두 제공됩니다.
- 엔터프라이즈 환경에 적합합니다.
- 단점:
- 상용 라이선스의 경우 비용이 발생할 수 있습니다.
- 초보자에게는 다소 복잡할 수 있습니다.
- 장점:
- RabbitMQ
- 장점:
- 메시지 큐 시스템의 표준으로 널리 사용됩니다.
- AMQP(Advanced Message Queuing Protocol) 및 MQTT 프로토콜을 모두 지원합니다.
- 다양한 플러그인과 기능을 제공합니다.
- 엔터프라이즈 환경에서 안정성이 높습니다.
- 단점:
- 설정 및 관리가 다소 복잡할 수 있습니다.
- 경량 프로토콜인 MQTT에 비해 무겁고 자원을 많이 소모할 수 있습니다.
- 장점:
Mosquitto 사용
공식 사이트에서 Mosquitto 를 다운로드 후 mosquitto 가 있는 폴더 경로에서 mosquitto 명령어를 사용하든가
mosquitto -c "C:\Program Files\mosquitto\mosquitto.conf <- 이와 같이 절대 경로를 사용하여 mosquitto를 실행시킵니다.
프로젝트에서는 Nuget에서 MQTTnet 다운로드 하여 사용할 수 있습니다.
var mqttService = host.Services.GetRequiredService<MqttService>();
// MQTT 브로커 연결
await mqttService.ConnectAsync("IsOneSoft","localhost");
// 메시지 발행
await mqttService.PublishAsync("Test", "I'm Jg");
// 토픽 구독
await mqttService.SubscribeAsync("Test");
위와 같은 방법으로 연결 및 메시지를 발행, 구독 할 수 있습니다.
MQTT Explorer를 다운로드 하여 메시지가 잘 전달되는 걸 확인할 수 있습니다.
'C#' 카테고리의 다른 글
Visual Studio 에서 .NET Framework 프로젝트 서버 배포 방법 (0) | 2024.04.16 |
---|---|
MSMQ ( Microsoft SQL Server Integration Services) (0) | 2024.03.08 |
Service 생성 성능 측정 (0) | 2024.02.19 |
VisualStudio 환경변수 설정 (0) | 2024.02.05 |
C# 자동 구현 속성, 필드, 속성 (0) | 2024.02.02 |