歡迎來到mqtt核心系列的第九章。這個系列一共有十章,用來介紹mqtt的核心特性和概念。在這一章,我們將講解mqtt中的遺言特性。
因為mqtt會執行在網路不好的環境中。可以合理的假設,在這些環境中,客戶端偶爾會不正常的斷開連線。原因包括連線丟失,電量為空等等。了解客戶端是正常斷連(傳送了disconnect訊息)還是非正常斷連(沒有傳送disconnect訊息),這對你正確做出響應有幫助。遺言特性為客戶端對非正常斷連做出響應提供了合適的途徑。
在mqtt中,你可以使用遺言去通知其它裝置有乙個裝置異常斷連了。每乙個客戶端在它連線**的時候都能定義它的遺言。遺言是乙個包含主題,保留資訊標誌,qos,和負載的普通資訊。**會一直儲存該訊息,直到該客戶端異常斷連。面對異常斷連,**會傳送遺言給所有訂閱了該遺言的主題的客戶端。但是如果乙個客戶端是通過傳送disconnect訊息正常斷連的,**會丟棄儲存的遺言。
當乙個客戶端異常斷連時,遺言能幫助你實現各種策略(至少可以通知其它客戶端該客戶端的離線狀態)。
客戶端可以在傳送connect訊息的時候指定遺言。
[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-ogdbnf0f-1613554185350)(
根據mqtt3.1.1的標準,**在以下情形下必須傳送遺言:
我們將在下一章學習存活時間
遺言是一種通知其它客戶端乙個客戶端意外斷連的好方法。在真實場景中,遺言通常會與保留訊息一起使用來儲存客戶端的狀態。例如,客戶端1先傳送了乙個connect訊息給**,這個訊息中包含乙個負載為"offline"的遺言,遺言的主題為"client1/status",並且這個遺言的lastwillretain標誌被設定為true。
接著,客戶端傳送乙個publish訊息到"client1/status",這個訊息的負載為"online"且保留保留資訊標誌為true。那麼只要客戶端1保持連線狀態,那麼新訂閱"client1/status"的客戶端就會收到"online"的保留訊息。如果客戶端1異常斷連,**就會傳送之前設定的遺言,並把主題"client1/status"的保留訊息更新為"offline"狀態。那麼再有客戶端訂閱了"client1/status"就會收到狀態為"offline"的保留訊息。這種保留訊息的模式能在其他客戶端更新特定主題的狀態。
第九章 核心同步介紹
1.隨著2.6版核心的出現,linux核心已經發展成搶占式核心,如果不加保護,排程程式可以在任何時刻搶占正在執行的核心程式碼,重新排程其他的程序執行 2.臨界區或者臨界段 訪問和操作共享資料的程式碼段 3.如果兩個執行執行緒 指代的是任何正在執行的程式碼,如乙個在核心執行程序 乙個中斷處理程式或者核...
第九章(筆記)
轉移指令是可以修改ip,或同時修改cs和ip的指令 offset 是用於提取標號偏移位址的操作符 jmp在第2章裡說到時用於修改ip或同時修改cs和ip的轉移指令,這章裡單獨的jmp指令是乙個無條件的轉移指令 jmp short 標號 是實現段內短轉移 jmp near ptr 標號 是實現段內近轉...
第九章作業
班級 0401304 學號 2013211526 姓名 鄧小俊 2.身份驗證 依據使用者所提供的身份資訊,來進行登入驗證,可以再細分為使用者是否可以登入sql sever 使用者是否可以登入到指定的目標資料庫等。授權 已通過身份驗證的使用者,檢查其所被賦予的許可權,是否可以訪問或者執行目標的物件 3...