MQTT Persistent Session ãš Clean Session ã®èª¬æ
![MQTT Persistent Session ãš Clean Session ã®èª¬æ](https://assets.emqx.com/images/2c7dab112accac7a04629ce7c05cbf6d.png?imageMogr2%2Fthumbnail%2F3040x1368)
ç®æ¬¡
MQTT Persistent Session
äžå®å®ãªãããã¯ãŒã¯ãšéãããããŒããŠã§ã¢ ãªãœãŒã¹ã¯ãIoT ã¢ããªã±ãŒã·ã§ã³ãçŽé¢ããå¿ èŠããã 2 ã€ã®å€§ããªåé¡ã§ããMQTT ã¯ã©ã€ã¢ã³ããšãããŒã«ãŒéã®æ¥ç¶ã¯ããããã¯ãŒã¯ã®å€åããªãœãŒã¹ã®å¶çŽã«ããããã€ã§ãç°åžžåæãããå¯èœæ§ããããŸãããããã¯ãŒã¯åæã«ããéä¿¡ãžã®åœ±é¿ã«å¯ŸåŠããããã«ãMQTT ãããã³ã«ã¯ Persistent Session ãæäŸããŸãã
MQTT ã¯ã©ã€ã¢ã³ãã¯ããµãŒããŒãžã®æ¥ç¶ãéå§ãããšãã« Persistent Session ã䜿çšãããã©ãããèšå®ã§ããŸãã Persistent Session ã«ã¯ãè€æ°ã®ãããã¯ãŒã¯æ¥ç¶äžã§ã»ãã·ã§ã³ãç¶ç¶ã§ããããã«ããããã®éèŠãªããŒã¿ãä¿æãããŸãã Persistent Session ã«ã¯ã次㮠3 ã€ã®äž»ãªæ©èœããããŸãã
- ãããã¯ãŒã¯ã®åæ¢ã«ããç¹°ãè¿ããµãã¹ã¯ã©ã€ãããå¿ èŠããããšããè¿œå ã®ãªãŒããŒããããåé¿ããŸãã
- ãªãã©ã€ã³æéäžã«ã¡ãã»ãŒãžãèŠéããªãããã«ããŸãã
- QoS 1 ããã³ QoS 2 ã¡ãã»ãŒãžããããã¯ãŒã¯åæ¢ã®åœ±é¿ãåããªãããã«ããŸãã
Persistent Session ã®ããã«ä¿åããå¿ èŠãããããŒã¿ã¯äœã§ãã?
äžèšã®ããšãããã»ãã·ã§ã³ãå埩ããã«ã¯ Persistent Session ã«éèŠãªããŒã¿ãä¿åããå¿ èŠãããããšãããããŸãããã®ããŒã¿ã®äžéšã¯ã¯ã©ã€ã¢ã³ãåŽã«ä¿åãããäžéšã¯ãµãŒããŒåŽã«ä¿åãããŸãã
ã¯ã©ã€ã¢ã³ãã«ä¿åãããã»ãã·ã§ã³ ããŒã¿:
- QoS 1 ããã³ QoS 2 ã¡ãã»ãŒãžã¯ãµãŒããŒã«éä¿¡ãããŸãããããŸã 確èªãå®äºããŠããŸããã
- ãµãŒããŒããåä¿¡ãããããŸã 確èªãå®äºããŠããªã QoS 2 ã¡ãã»ãŒãžã
ãµãŒããŒã«ä¿åãããã»ãã·ã§ã³ ããŒã¿:
- æ®ãã®ã»ãã·ã§ã³ ã¹ããŒã¿ã¹ã空ã§ãã£ãŠããã»ãã·ã§ã³ãååšãããã©ããã
- ã¯ã©ã€ã¢ã³ãã«éä¿¡ããããã®ã®ã確èªããŸã å®äºããŠããªã QoS 1 ããã³ QoS 2 ã¡ãã»ãŒãžã
- QoS 0 ã¡ãã»ãŒãž (ãªãã·ã§ã³)ãã¯ã©ã€ã¢ã³ããžã®éä¿¡ãåŸ æ©ããŠãã QoS 1 ããã³ QoS 2 ã¡ãã»ãŒãžã
- ã¯ã©ã€ã¢ã³ãããåä¿¡ããããŸã 確èªå¿çãå®äºããŠããªã QoS 2 ã¡ãã»ãŒãžãWill Messagesãããã³ Will Delay Intervalsã
MQTT Clean Session ã®äœ¿çš
Clean Session ã¯ãã»ãã·ã§ã³ç¶æ ã®ã©ã€ããµã€ã¯ã«ãå¶åŸ¡ããããã«äœ¿çšããããã©ã° ãããã§ããå€ 1 ã¯ãæ¥ç¶æã«æ°ããã»ãã·ã§ã³ãäœæãããã¯ã©ã€ã¢ã³ããåæããããšã»ãã·ã§ã³ãèªåçã«ç Žæ£ãããããšãæå³ããŸãã0 ã®å Žåã¯ãæ¥ç¶æã«åã®ã»ãã·ã§ã³ã®åå©çšãè©Šã¿ãããšãæå³ããŸãã察å¿ããã»ãã·ã§ã³ããªãå Žåã¯ãæ°ããã»ãã·ã§ã³ãäœæãããã¯ã©ã€ã¢ã³ããåæãããåŸãåžžã«ååšããŸãã
*泚: Persistent Session ã¯ãã¯ã©ã€ã¢ã³ããåºå®ã¯ã©ã€ã¢ã³ã ID ã䜿çšããŠå床æ¥ç¶ããå Žåã«ã®ã¿åéã§ããŸããã¯ã©ã€ã¢ã³ã ID ãåçã§ããå Žåãæ¥ç¶ãæåããåŸã«æ°ãã Persistent Session ãäœæãããŸãã*
以äžã¯ããªãŒãã³ãœãŒã¹ã® MQTT ãããŒã«ãŒ EMQX ã®ããã·ã¥ããŒãã§ããå³ã®æ¥ç¶ã¯åæãããŠããããšãããããŸããã Persistent Session ã§ãããããããã·ã¥ããŒãã«ã¯åŒãç¶ã衚瀺ã§ããŸãã
EMQX ã¯ãããã·ã¥ããŒãã§ã®ã»ãã·ã§ã³é¢é£ã®ãã©ã¡ãŒã¿ãŒã®èšå®ããµããŒãããŠããŸãã
MQTT 3.1.1 ã§ã¯ã Persistent Session ããã€æéåãã«ãªããã¯æå®ãããŠããŸããããããã³ã« ã¬ãã«ã ãã§ç解ãããå Žåããã® Persistent Session ã¯æ°žç¶çã§ããå¿ èŠããããŸãããã ããããã¯ãµãŒããŒåŽã§å€ãã®ãªãœãŒã¹ãæ¶è²»ãããããå®éã®ã·ããªãªã§ã¯çŸå®çã§ã¯ãããŸããããããã£ãŠããµãŒããŒã¯éåžžããããã³ã«ã«æ£ç¢ºã«åŸããŸããããã»ãã·ã§ã³ã®æå¹æéãå¶éããã°ããŒãã«æ§æããŠãŒã¶ãŒã«æäŸããŸãã
ããšãã°ã EMQ ãæäŸããFree Public MQTT Broker ã¯ãã»ãã·ã§ã³ã®æå¹æéã 5 åãæ倧ã¡ãã»ãŒãžæ°ã 1000 ã«èšå®ããQoS 0 ã¡ãã»ãŒãžãä¿åããŸããã
次ã«ããªãŒãã³ãœãŒã¹ã®ã¯ãã¹ãã©ãããã©ãŒã MQTT 5.0 ãã¹ã¯ããã ã¯ã©ã€ã¢ã³ã ããŒã« MQTTXã䜿çšããã¯ãªãŒã³ ã»ãã·ã§ã³ã®äœ¿çšæ¹æ³ã瀺ããŸãã
MQTTX ãéããåŸã以äžã«ç€ºãããã«New Connection
ãã¿ã³ãã¯ãªãã¯ããŠMQTT æ¥ç¶ãäœæããŸãã
Clean Session ããªã (ã€ãŸã false) ã«ããŠååä»ãã®æ¥ç¶ãäœæãMQTT_V3
ãMQTT ããŒãžã§ã³ 3.1.1 ãéžæããŠãConnect
å³äžé
ã® ãã¿ã³ãã¯ãªãã¯ããŸãã
æ¥ç¶ãããããã©ã«ãã®ãµãŒããŒã¯ã EMQ ãæäŸããç¡æã®ãããªã㯠MQTT ãããŒã«ãŒã§ãã
clean_session_false
æ¥ç¶ãæåããQoS ã 1 ã«èšå®ããããããããã¯ããµãã¹ã¯ã©ã€ãããŸãã
賌èªãæåããããDisconnect
å³äžé
ã«ãã ãã¿ã³ãã¯ãªãã¯ããŸãã次ã«ãåã³ MQTT ããŒãžã§ã³ã 3.1.1 ã«èšå®ã㊠ãšããååã®æ¥ç¶ãäœæãMQTT_V3_Publish
ãclean_session_false
æ¥ç¶ãæåããåŸã« 2 ã€ã® QoS 1 ã¡ãã»ãŒãžããããã¯ã«ãããªãã·ã¥ããŸãã
次ã«ãMQTT_V3 æ¥ç¶ãéžæããConnect
ãã¿ã³ãã¯ãªãã¯ããŠãµãŒããŒã«æ¥ç¶ããŸãããªãã©ã€ã³æéäžã«çºè¡ããã 2 ã€ã®ã¡ãã»ãŒãžãæ£åžžã«åä¿¡ã§ããŸãã
MQTT 5.0 ã§ã®ã»ãã·ã§ã³ã®æ¹å
MQTT 5.0 ã§ã¯ãã¯ãªãŒã³ ã»ãã·ã§ã³ã¯ã¯ãªãŒã³ ã¹ã¿ãŒããšã»ãã·ã§ã³æå¹æéééã«åå²ãããŸããClean Start ã¯ãæ¥ç¶æã«æ°ããã»ãã·ã§ã³ãäœæããããæ¢åã®ã»ãã·ã§ã³ã®åå©çšãè©Šè¡ããããæå®ããŸããã»ãã·ã§ã³æå¹æéééã¯ããããã¯ãŒã¯æ¥ç¶ãåæãããåŸã«ã»ãã·ã§ã³ãæéåãã«ãªããŸã§ã®æéãæå®ããããã«äœ¿çšãããŸãã
Clean Start of ã¯true
ãæ¢åã®ã»ãã·ã§ã³ããã¹ãŠç Žæ£ããå®å
šã«æ°ããã»ãã·ã§ã³ãäœæããããšãæå³ããŸããfalse
ã¯ã©ã€ã¢ã³ããšã®éä¿¡ãåéããã«ã¯ãã¯ã©ã€ã¢ã³ã ID ã«é¢é£ä»ããããã»ãã·ã§ã³ã䜿çšããå¿
èŠãããããšã瀺ããŸã (ã»ãã·ã§ã³ãååšããªãå Žåãé€ã)ã
Session Expiry Interval ã¯ãMQTT 3.1.1 ã«æ°žç¶çã«ååšãã Persistent Session ã«ãã£ãŠåŒãèµ·ãããããµãŒã㌠ãªãœãŒã¹ã®æµªè²»åé¡ã解決ããŸãã0 ãŸã㯠none ã«èšå®ãããšãåææã«ã»ãã·ã§ã³ãæéåãã«ãªãããšã瀺ããŸãã0 ãã倧ããå€ã¯ããããã¯ãŒã¯æ¥ç¶ãéããããåŸã«ã»ãã·ã§ã³ãæ®ãç§æ°ã瀺ããŸããã«èšå®ãããšã0xFFFFFFFF
ã»ãã·ã§ã³ãæéåãã«ãªããªãããšãæå³ããŸãã
詳现ã«ã€ããŠã¯ãããã°ãClean Start and Session Expiry Intervalããåç §ããŠãã ããã
MQTTã»ãã·ã§ã³ã«é¢ããQ&A
ã»ãã·ã§ã³ãçµäºããŠããä¿æãããã¡ãã»ãŒãžã¯ãŸã ååšããŸãã?
MQTT ä¿æã¡ãã»ãŒãžã¯ã»ãã·ã§ã³ç¶æ ã®äžéšã§ã¯ãªããããã»ãã·ã§ã³ã®çµäºæã«åé€ãããŸããã
ã¯ã©ã€ã¢ã³ãã¯ãçŸåšã®ã»ãã·ã§ã³ãåéãããã»ãã·ã§ã³ã§ããããšãã©ã®ããã«ããŠç¥ãã®ã§ãããã?
MQTT ãããã³ã«ã¯ãv3.1.1 以éãCONNACK ã¡ãã»ãŒãžã® Session Present ãã£ãŒã«ããèšèšããŸããããµãŒããŒããã®ãã£ãŒã«ãã®å€ 1 ãè¿ããå ŽåãçŸåšã®æ¥ç¶ã¯ãµãŒããŒã«ãã£ãŠä¿åãããã»ãã·ã§ã³ãåå©çšããããšãæå³ããŸããã¯ã©ã€ã¢ã³ãã¯ããã®ãã£ãŒã«ãå€ã䜿çšããŠãæ¥ç¶ãæåããåŸã«åãµãã¹ã¯ã©ã€ããããã©ããã決å®ã§ããŸãã
Persistent Session ã䜿çšãããã¹ã ãã©ã¯ãã£ã¹
- åçãªã¯ã©ã€ã¢ã³ã ID ã¯äœ¿çšã§ããŸãããã¯ã©ã€ã¢ã³ã ID ãã¯ã©ã€ã¢ã³ãæ¥ç¶ããšã«åºå®ãããŠããããšã確èªããå¿ èŠããããŸãã
- ãµãŒããŒã®ããã©ãŒãã³ã¹ããããã¯ãŒã¯ã®ç¶æ ãã¯ã©ã€ã¢ã³ãã®çš®é¡ã«åºã¥ããŠãã»ãã·ã§ã³ã®æå¹æéãé©åã«è©äŸ¡ããŸããèšå®ãé·ããããšããµãŒããŒåŽã®ãªãœãŒã¹ãããå€ãæ¶è²»ãããŸãããŸããèšå®ãçããããšãæ£åžžã«åæ¥ç¶ããåã«ã»ãã·ã§ã³ãæéåãã«ãªããŸãã
- ã¯ã©ã€ã¢ã³ããã»ãã·ã§ã³ãå¿ èŠãªããšå€æããå Žåã¯ãClean Session ã true ãšããŠäœ¿çšããŠåæ¥ç¶ããåæ¥ç¶ãæåããåŸã«åæã§ããŸããMQTT 5.0 ã®å Žåãåææã«ã»ãã·ã§ã³æå¹æéééãçŽæ¥ 0 ã«èšå®ããŠãæ¥ç¶ãåæããããšãã«ã»ãã·ã§ã³ãæéåãã«ãªãããšã瀺ãããšãã§ããŸãã
ãŸãšã
ãã®æç¹ã§ãMQTT Persistent Session ã®çŽ¹ä»ã¯å®äºãããã¹ã¯ããã ã¯ã©ã€ã¢ã³ããä»ãã Clean Session ã®äœ¿çšæ¹æ³ã瀺ããŸããããã®èšäºãåç §ããŠãMQTT Persistent Session ã䜿çšããŠãªãã©ã€ã³ ã¡ãã»ãŒãžãåä¿¡ãããµãã¹ã¯ãªãã·ã§ã³ã®ãªãŒããŒããããåæžã§ããŸãã
次ã«ã EMQ ãæäŸããMQTT ãããã³ã«ã®ããããããã¬ã€ãã·ãªãŒãºã®èšäºãåç §ããŠãMQTT ãããã¯ãã¯ã€ã«ãã«ãŒããä¿æã¡ãã»ãŒãžããŠã£ã« ã¡ãã»ãŒãžãããã³ãã®ä»ã®æ©èœã«ã€ããŠåŠã¶ããšãã§ããŸããMQTT ã®ããé«åºŠãªã¢ããªã±ãŒã·ã§ã³ãæ¢çŽ¢ããMQTT ã¢ããªã±ãŒã·ã§ã³ãšãµãŒãã¹ã®éçºãå§ããŸãããã