iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 12
0
IoT

IoT幫幫忙系列 第 12

MQTT(下)

  • 分享至 

  • xImage
  •  

今天要來介紹MQTT的Topic(主題)命名格式以及QoS
MQTT主題名稱是UTF-8(萬國碼)編碼的字串,我們可以自行決定主題名稱
!注意事項!
1.主題名稱請使用英文,並且取個有意義的名字(因為怕某些程式語言不支援UTF-8編碼或中文)
2.名稱長度不可超過65536個字元(216位元組) (雖然我是覺得應該很少有人能超過啦
3.勿用$開頭也不可包含#和+字元,最好不要加入空格因為英文的「半形」空格和中文的「全形」空格的內碼不一樣,若輸入名稱時沒有統一,會導致程式讀取不到,減號和乘號(*)在程式語言中有特殊意義,為了避免誤會,也不建議使用(反正就是盡量避免特殊符號和空格
4.區分英文大小寫

QoS(Quality of Service)品質
為了適應不同的情況,MQTT支持三種不同級別的QoS(0、1、2)
Qos 0:at most once 最多傳一次
訊息送出後就不管了,由於 MQTT 是屬於網路架構中的應用層,它並不會知道底層的網路斷線與否,所以 Broker 是有可能沒收到訊息的。
Qos 1:at least once 至少傳一次
如果連線中斷或其他狀況導致 Publisher 沒有收到就會重新發送,保證訊息至少傳送至 Broker 一次。但也造成可能會有重覆訊息
Qos 2:exactly once 確實傳送一次
Broker從Publisher收到訊息後,將回應Publisher一個PUBREC訊息以確認有收到要發布的訊息,Publisher如果收到 Broker傳送的PUBREC訊息時,會再傳送PUBREL訊息給Broker,告訴Broker可以釋放訊息,此時Broker會把訊息傳送給有訂閱此主題的Subscriber,當傳送完成後會回應PUBCOMP訊息給Publisher告知已經發送完畢,Qos 2雖然不會像Qos 1一樣重覆傳送相同訊息,但缺點是佔用頻寬與傳送時間較多

MQTT就先寫到這邊啦~明天見~


上一篇
MQTT(中)
下一篇
CoAP(上)
系列文
IoT幫幫忙30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言