본문 바로가기
▶ Back-End/개념 요약

MQTT 란?

by 오늘도 코딩 2022. 11. 7.
728x90
반응형

MQTT ( Message Queueing Telemetry Transport )

* 자세한 설명 생략

 

 

▷ MQTT 란?

 

- IoT와 같이 제한되거나 대규모 트래픽 전송을 위해 만들어진 발행/구독 기반의 메시징 프로토콜

 

-  브로커와 클라이언트는 TCP/IP 소켓 연결을 한 후 상태 유지(연결 지향적) 

*TCP/IP : 데이터가 의도된 목적지로 전송 될 수 있도록 보장해 주는 하나의 약속

 

 

▷ MQTT 주요 구성

 

명칭 설명
Message MQTT를 통해 교환되는 모든 정보
Publisher ( 발행자 ) Message 송신
Subscriber ( 구독자 ) Message 구독 및 수신 
Topic ( 주제 ) Message 이름 ( 채널 )
Broker ( 중개인 ) 발행자로 부터 모든 Message를 받고, 특정 Topoic을 구독한 구독자들에게 Message 전달

 

 

▷ Message Bus

 

Message Bus에 연결된 Application들이 발행자/구독자 Message 교환

 

Message Bus, MQTT 기본 구조

 

 

▷ Qos ( Quality of Service )

 

- 단계↑ 통신품질↑ 성능↓ ( 상황에 맞게 사용 )

Level 설명
Level 0 
( At most Once )
- Message는 구독자에게 한번만 전달 

- 성공/실패 확인 안함
Level 1 
( At least Once )
- PUBACK ( Publish Acknowledge ) 을 통해 성공/실패 확인

- PUBACK이 분실 되면 발행자가 구독자에게 Message 다시 전달 ( 구독자 메시지 중복 수신 )
Level 2 
( Exactly Once )
- Message는 구독자에게 무조건 한번만 전달

- Message가 처리될 때까지 발행자, 구독자 모두 Message를 Message Storage에 저장

- PUBREC ( Publish Received ) 이 분실 되어 발행자가 구독자에게 Message를 다시 보내도
  Broker는 저장한 Message를 구독자에게 다시 전달 하지 않고 발행자에게 PUBREC를 다시 보낸다.

- 발행자는 PUBREC을 받으면 PUBREC을 Broker에게 보내고 Broker는 그때 저장한 Message를 지운다.

 

 

▷ 관련 글

 

MQTT Broker(mosqitto) 설치 및 설정

Docker를 이용해 MQTT Broker를 간단하게 설치할 수 있다. *자세한 설명 생략 ① docker-compose.yml 생성 *docker-compose.yml 설명 아래 관련 글 참고 version: "3.7" services: mqtt: container_name: mqtt-broker image: eclipse-mosqu

coding-today.tistory.com

 

SpringBoot에서 MQTT Client + WebFlux 구축

WebFlux를 적용한 MQTT Client를 구축하고 Topic 메시지 도착 시 Callback으로 Bean을 통해 서비스 구분 *Mqtt Broker(mosqitto) 아래 관련 글 참고 *자세한 설명 생략 ▷ Project 전체 구조 *파일 이름으로 검색 가능

coding-today.tistory.com

 

메시지 큐(Message Queue)란?

메시지 큐의 기본 개념을 간단히 소개 *자세한 설명 생략 ▷ 메시지 큐(Message Queue)란? - 메시지 지향 미들웨어(MOM : Message Oriented Middleware)를 구현한 시스템 *미들웨어 : Application들을 연결해 서로

coding-today.tistory.com

 

 

728x90
728x90

'▶ Back-End > 개념 요약' 카테고리의 다른 글

R2DBC 란?  (0) 2022.11.11
Gradle vs Maven  (0) 2022.11.09
Spring WebFlux 란?  (0) 2022.11.08
리눅스 권한(Permission) 설정(8진수 표기)  (0) 2021.02.17
리눅스 파일 속성  (0) 2021.02.17

댓글