일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- com.netflix.zuul.exception.ZuulException: Hystrix Readed time out
- CORS policy: No 'Access-Control-Allow-Origin'
- cors
- #spring boot admin
- #actuator
- mosquitto
- mariadb 한국어
- db utf8
- mysql 한국어
- xrdp
- com.netflix.zuul.exception.ZuulException
- java collection
- mqtt
- #spring boot
- Access-Control-Allow-Origin
- emqx
- mariadb 다국어
- 크로스도메인
- TreeMap
- Hystrix Read time out
- 원격
- message protocol
- IOT
- mstsc
- backtracking
- HashMap
- ArrayList
- #MSA
- Set
- mysql 다국어
- Today
- Total
miin29na
[MQTT] MQTT Protocol 본문
MQTT
MQTT(Message Queuing Telemetry Transport) 는 M2M(machine-to-machine), IoT(Internet of things) 환경에서와 같이 저전력, 낮은 대역폭 환경에서 사용 할수 있도록 설계된 경량의 메시지 프로토콜이다.
Push 기술로, Server/Client 방식이 아닌 Broker 를 통해 송신자(Publisher)가 메시지를 발행(publish) 하고 수신자(Subscriber)가 메시지를 구독(subscribe) 하는 방식을 사용한다.
Facebook Messenger 에서 사용되고 있다.
MQTT Protocol
http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html
MQTT
1. Connection Oriented
TCP/IP 연결 기반으로, MQTT Broker 와 연결을 요청하는 Client 들은 계속적으로 연결을 유지한다.
2. QoS(Quality of Service)
- Level 0: 메시지는 최대 1회 전송. Topic 을 통해 message 를 전달 하지만 publisher 에게 전달 성공여부는 확인하지 않는다.
- Level 1: 메시지는 최소 1회 전송. message 전달하고 publisher 에게 성공여부를 알린다. publisher가 성공여부를 받지 못하면 중복된 message 를 보낸다.
받은 것이 불확실해지면 정해진 횟수만큼 전송한다. 중복된 message 를 보낼 수 있다.
- Level 2 : 메시지는 반드시 1회만 전송. 성공여부를 받지 못하더라도 message 를 보낸 사실을 알고 있으므로 중복 메세지를 보내지 않는다.(성공 여부를 ㅎㄴ핸드 세이킹 하는 과정이 존재)
message 를 정확히 한번 수신할수 있도록 한다.
. Topic
/ 로 구분 지어 계층으로 관리 한다. 대량의 센서들을 관리하기 용이하다.
Topic 기준으로 Publisher 와 Subscriber가 구독하거나 발행한다.
. Publish/Subscribe
- Receiver 는 수신 받기를 원하는 topic 을 subscribe 한다.
- Publisher는 publish 하면, Broker 는 subscribe 하고 있는 다수의 receiver 들에게 Message 를 전달한다.
MQTT Broker
MQTT Server 라고 하지 않고 Broker 라고 하는 이유는 Publisher 와 Subscriber 가 Message를 주고 받을 수 있도록 중개만 해주기 때문이다.
Broker 의 종류
-rabbitMQ
-activeMQ
-emqx
- Mosquitto(간단한 테스트용으로 용이)
Mosquitto 설치/테스트 : https://miin29na.tistory.com/74
broker comparison : https://en.wikipedia.org/wiki/Comparison_of_MQTT_implementations
* 개발 당시 JAVA 기준, Cluster 지원 등의 이유로 Emqx 선택함.
Reference
https://www.joinc.co.kr/w/man/12/MQTT/Tutorial
'IT > Mqtt' 카테고리의 다른 글
[MQTT]Mosquitto 설치/테스트 (맥북) (0) | 2020.04.11 |
---|