MQTT Option(Retain,CleanSession,LWT)

2021. 10. 22. 15:29Android/MQTT

Retain

Retain 기능은 마지막으로 Publish된 메시지를 MQTT 서버가 보관 해 두었다가 새로운 Subscriber에 메시지를 전달하는 기능이다.

MQTT는 Publish/Subscribe 타입 모델이다. 따라서, Publish된 때 Subscribe한 클라이언트에만 메시지가 전송된다. 따라서 예를 들면 1 시간 마다 업데이트 되는 정보를 얻는 Subscribe로 해도 최대 1 시간은 아무것도 정보를 얻을 수 없는 것이다.

그러나 이 경우에도 Retain 기능을 사용하면 최신 정보를 얻을 수 있다.

 

메세지 보내기(Retain On)

mosquitto_pub -h 192.168.0.241 -t /test -m "subscribe ok!!" -r

구독 하기

mosquitto_sub -h 192.168.0.241 -t /test
subscribe ok!!

구독을 할때 마다 "subscribe ok!!" 메세지를 전달 받는다

 

세션

  • 영구 클라리언트 옵션이 존재한다. 영구 클라이언트(클린 세션이 false로 설정된 클라이언트)는 연결을 끊지 않고 대기 상태로 바꾼다. 대기 상태에 있다가 클라이언트가 연결되면 그 때 다시 연결한다.
  • 일반적인 클라이언트는 Broker에서 Keep Alive 메시지를 보내고 살아있다는 메시지가 오지 않는다면 끊어버린다. 만기 기간은 시간, 일, 주, 월 및 연도로 정할 수 있다.

 

LWT(Last will and testament)

 

- MQTT의 경우 subscribe 시점에서 자신이 접속 종료가 되었을 때 특정 topic으로 지정한 메시지를 보내도록 미리 설정할 수 있다.

 

구독하기(LWT 토픽&메세지 설정)

mosquitto_sub -h 192.168.0.241 -t /test --will-topic /last --will-payload "Will Message"

LWT Topic 으로 구독하기

mosquitto_sub -h 192.168.0.241 -t /last
Will Message

 

구독한 /test 종료시 /last 토픽으로 메세지 전달 됨

 

참고

http://spectrumdig.blogspot.com/2016/02/mqtt-lwtlast-will-and-testament.html

 

MQTT 접속해제 - LWT(Last will and testament)

javscript, node.js, meteor, as3, go, IoT 등의 프로그래밍 관련 글들을 올리는 블로그입니다.

spectrumdig.blogspot.com

 

https://dalkomit.tistory.com/126

 

MQTT Will message

Will Message ? 영어 단어 Will은 , 명사로 의지, 유언의 의미를 가지고 있다. MQTT에서 will은 의지가 아닌 유언의 뜻으로 사용된다. 클라이언트가 브로커에게 연결하고, will 메시지를 등록하면 비정상

dalkomit.tistory.com

 

'Android > MQTT' 카테고리의 다른 글

MQTT Option(Qos)  (0) 2021.10.22
Mosquitto 설치 및 테스트  (0) 2021.10.13
MQTT 사용하기  (0) 2021.10.13