MQTT協(xié)議理解

開始

MQTT協(xié)議的開發(fā)公司,誕生時間等信息台囱,可以通過google先生去查淡溯,這里就省略了。只說以下幾個信息簿训。

  • 最新版本3.1.1
  • 協(xié)議的詳細內(nèi)容咱娶,有各個語言版本的說明米间。中文版鏈接
  • linux上最常用的是mosquitto

優(yōu)點

  • 十分輕量,最小可以做到2byte膘侮。處理速度快屈糊,占用帶寬小。特別適合在M2M場景下使用琼了。
  • 可以做到一對一逻锐,一對多,雙向通信
  • 實際上也是基于TCP/IP的
  • 消息可控可處理雕薪。采用pub/sub的方式昧诱,pub端發(fā)送某一主題的消息給服務(wù)器,sub訂閱某些主題所袁。中間的服務(wù)器可以進行很多處理盏档,然后分發(fā)消息給sub。

主題管理

sub只能接收訂閱的主題燥爷。主題可以使用[/]來設(shè)定成階層的構(gòu)造蜈亩。
比如sub端想接收某一個服務(wù)器(或者是數(shù)據(jù)中心)的溫度濕度消息。

/datacenter/abc/tokyo/floor/01/temperature
/datacenter/abc/tokyo/floor/01/humidity
/datacenter/abc/osaka/floor/01/temperature
/datacenter/abc/osaka/floor/01/humidity
/datacenter/xyz/tokyo/floor/05/temperature
/datacenter/xyz/tokyo/floor/05/humidity
/datacenter/xyz/nagoya/floor/12/temperature
/datacenter/xyz/nagoya/floor/12/humidity

sub端可以使用一些符號前翎,模糊訂閱一批主題稚配。

  • 準確訂閱

/datacenter/abc/tokyo/floor/01/temperature

ABC數(shù)據(jù)中心的tokyo的1層的溫度

  • 前方一致訂閱

/datacenter/xyz/nagoya/#

使用[#]獲取 xyz數(shù)據(jù)中心的nagoya的所有階層的溫度和濕度

  • 部分一致訂閱

/datacenter/+/tokyo/floor/+/humidity

使用[+]獲取所有數(shù)據(jù)中心的tokyo的所有階層的濕度

[#]和[+]可以組合使用。

** 有意思的是sub可以使用通配符訂閱鱼填,pub端卻不能使用药有,必須發(fā)布完整的主題名 **

QoS

pub 發(fā)布消息到達sub端,可以指定以下三種品質(zhì)等級
QoS0 : 就發(fā)送一次苹丸,sub收到收不到都不再重新發(fā)愤惰。
**QoS1 **: 保證至少sub端收到一次。但是有可能多次接到赘理。

  • pub發(fā)送出去后宦言,需要sub返回一個【已收到】的回信。如果pub在一定時間未收到回信商模,會重復發(fā)送同一個消息奠旺,直到收到sub的回信。

QoS2 : 保證至少且只有一次sub端接到消息施流。

  • 這個屬于比較有意思的一項响疚。需要來回兩次,每次攜帶的狀態(tài)碼都不一樣瞪醋。在成功前忿晕,會一直重復發(fā)送。直到最終成功银受。
概念圖

遺言機制

協(xié)議有專門設(shè)定遺言的標志: Will Flag践盼。同時會影響另外兩個位(Will Qos和Will Retain)是否有效鸦采。

Will Flag
就是pub客戶端預先定義好,在自己跟MQTT服務(wù)器異常斷開的情況下咕幻,所留下的最后遺愿(Last Will)渔伯,也稱之為遺囑(Testament)阅爽。 這個遺囑就是一個由客戶端預先定義好的主題和對應(yīng)消息敏簿,附加在CONNECT的可變頭部中,在客戶端連接出現(xiàn)異常的情況下杖玲,由服務(wù)器主動發(fā)布此消息绷耍。
只有在Will Flag位為1時吐限,Will Qos和Will Retain才會被讀取,此時消息體Playload中要出現(xiàn)Will Topic和Will Message具體內(nèi)容褂始,否則诸典,Will QoS和Will Retain值會被忽略掉。

Will Qos
兩位表示崎苗,和PUBLISH消息固定頭部的QoS level含義一樣狐粱。
若標識了Will Flag值為1,那么Will QoS就會生效胆数,否則會被忽略掉肌蜻。

Will RETAIN
如果設(shè)置Will Flag,Will Retain標志就是有效的必尼,否則它將被忽略蒋搜。
當客戶端意外斷開服務(wù)器發(fā)布其Will Message之后,服務(wù)器是否應(yīng)該繼續(xù)保存判莉。這個屬性和PUBLISH固定頭部的RETAIN標志含義一樣豆挽。

PUBLISH固定頭部的RETAIN
定義MQTT服務(wù)器是否保留最后一次pub傳遞過來的消息。如果保留的話券盅,當下一次消息發(fā)布前帮哈,如果有心的sub端加入,那么就把MQTT上保留的消息發(fā)送給新追加的sub端锰镀。
比如:一個小時或者一天才發(fā)布一次娘侍,新的消息接收端(sub端)卻隨時會追加的場景,就適合設(shè)定設(shè)定RETAIN泳炉。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末憾筏,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子花鹅,更是在濱河造成了極大的恐慌氧腰,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異容贝,居然都是意外死亡,警方通過查閱死者的電腦和手機之景,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進店門斤富,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人锻狗,你說我怎么就攤上這事满力。” “怎么了轻纪?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵油额,是天一觀的道長。 經(jīng)常有香客問我刻帚,道長潦嘶,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任崇众,我火速辦了婚禮掂僵,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘顷歌。我一直安慰自己锰蓬,他們只是感情好,可當我...
    茶點故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布眯漩。 她就那樣靜靜地躺著芹扭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪赦抖。 梳的紋絲不亂的頭發(fā)上舱卡,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天,我揣著相機與錄音摹芙,去河邊找鬼灼狰。 笑死,一個胖子當著我的面吹牛浮禾,可吹牛的內(nèi)容都是我干的交胚。 我是一名探鬼主播,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼盈电,長吁一口氣:“原來是場噩夢啊……” “哼蝴簇!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起匆帚,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤熬词,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體互拾,經(jīng)...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡歪今,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了颜矿。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片寄猩。...
    茶點故事閱讀 39,992評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖骑疆,靈堂內(nèi)的尸體忽然破棺而出田篇,到底是詐尸還是另有隱情,我是刑警寧澤箍铭,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布泊柬,位于F島的核電站,受9級特大地震影響诈火,放射性物質(zhì)發(fā)生泄漏兽赁。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一柄瑰、第九天 我趴在偏房一處隱蔽的房頂上張望闸氮。 院中可真熱鬧,春花似錦教沾、人聲如沸蒲跨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽或悲。三九已至,卻和暖如春堪唐,著一層夾襖步出監(jiān)牢的瞬間巡语,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工淮菠, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留男公,地道東北人。 一個月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓合陵,卻偏偏與公主長得像枢赔,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子拥知,可洞房花燭夜當晚...
    茶點故事閱讀 44,947評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 一踏拜、協(xié)議概述 物聯(lián)網(wǎng)(Internet of Things,IoT)最近曝光率越來越高低剔。雖然HTTP是網(wǎng)頁的事實標...
    令狐沖233閱讀 394評論 0 0
  • MQTT Protocol MQTT協(xié)議特性 一句話總結(jié):MQTT是一個簡單速梗,輕量的消息發(fā)布/訂閱協(xié)議肮塞。 MQTT...
    福克斯記閱讀 7,249評論 0 9
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理姻锁,服務(wù)發(fā)現(xiàn)枕赵,斷路器,智...
    卡卡羅2017閱讀 134,657評論 18 139
  • 我們心中所愛戴的那些人過于理想位隶,過于完美化烁设。然而,理想與現(xiàn)實是存在差距的钓试,也許轉(zhuǎn)眼間他們就會淪為我們所厭惡的人。 ...
    一葉泰山閱讀 129評論 0 0
  • 01 昨天是情人節(jié)挽鞠。 下班的路上,我看到寒風里有個阿姨拎著一個桶正在路邊賣紅玫瑰狈孔,而一個打扮時髦的姑娘信认,與這位賣花...
    妮妮小屋閱讀 335評論 0 4