本發(fā)明涉及物聯(lián)網(wǎng)領(lǐng)域,尤其涉及mqtt消息異步處理方法、裝置、電子設(shè)備及可讀存儲介質(zhì)。
背景技術(shù):
1、mqtt(消息隊列遙測傳輸)是iso標準(iso/iec?prf?20922)下基于發(fā)布/訂閱范式的消息協(xié)議,在現(xiàn)有的物聯(lián)網(wǎng)技術(shù)中,直接在mqtt的回調(diào)中處理業(yè)務(wù)邏輯是一種常見的方法。然而,上述方法存在以下問題:
2、(一)響應(yīng)時間延長:若回調(diào)函數(shù)中的業(yè)務(wù)邏輯耗時較長,將引發(fā)響應(yīng)時間的顯著延遲。這種延遲不僅可能干擾其他消息的正常處理流程,還可能對整體系統(tǒng)的響應(yīng)性能造成不利影響。更為嚴重的是,一旦回調(diào)函數(shù)的執(zhí)行時間超出了mqtt客戶端所設(shè)定的心跳超時閾值,mqtt服務(wù)器可能會因此將客戶端判定為離線狀態(tài),進而影響客戶端與服務(wù)器之間的正常通信;
3、(二)阻塞其他消息處理:回調(diào)函數(shù)中的長時間執(zhí)行會阻塞消息處理流程,導致其他消息無法及時得到處理。特別是在消息到達頻率較高的情境下,如果回調(diào)函數(shù)的執(zhí)行時間相對較長,這種情況可能進一步加劇,最終造成消息隊列中的消息堆積。長時間的堆積不僅會延緩系統(tǒng)的響應(yīng)速度,影響其實時性能,而且可能導致系統(tǒng)處理能力的瓶頸,從而限制系統(tǒng)的吞吐量;
4、(三)系統(tǒng)資源占用:長時間的業(yè)務(wù)邏輯處理往往意味著系統(tǒng)會占用大量的系統(tǒng)資源,包括cpu、內(nèi)存和網(wǎng)絡(luò)帶寬等。如果這些資源的占用率過高且持續(xù)時間較長,將會對系統(tǒng)的穩(wěn)定性和性能產(chǎn)生顯著影響。具體來說,高cpu占用可能導致其他進程的執(zhí)行受到干擾,高內(nèi)存占用可能引發(fā)內(nèi)存溢出或系統(tǒng)卡頓,而網(wǎng)絡(luò)帶寬的過度占用則可能導致網(wǎng)絡(luò)通信的延遲或中斷。
技術(shù)實現(xiàn)思路
1、針對上述現(xiàn)有技術(shù)的缺點,本發(fā)明的目的是提供mqtt消息異步處理方法、裝置、電子設(shè)備及可讀存儲介質(zhì),以解決現(xiàn)有技術(shù)中的一個或多個問題。
2、為實現(xiàn)上述目的,本發(fā)明的技術(shù)方案如下:
3、一種mqtt消息異步處理方法,包括以下步驟:
4、接收第一客戶端多個訂閱主題請求,并從第二客戶端獲取對應(yīng)所述訂閱主題及該主題內(nèi)的數(shù)據(jù)信息;
5、發(fā)送所述數(shù)據(jù)信息至內(nèi)存隊列,以通過內(nèi)存隊列處理數(shù)據(jù)信息,所述數(shù)據(jù)信息被存儲于內(nèi)存數(shù)據(jù)庫中;
6、從所述內(nèi)存數(shù)據(jù)庫查詢數(shù)據(jù)信息處理結(jié)果并發(fā)送至第一客戶端以及前端設(shè)備。
7、進一步的,所述處理數(shù)據(jù)信息包括步驟如下:
8、將關(guān)聯(lián)所述主題的數(shù)據(jù)信息添加至內(nèi)存隊列末尾;
9、每隔預設(shè)間隔時間從所述內(nèi)存隊列中調(diào)取預設(shè)數(shù)量的所述數(shù)據(jù)信息;
10、存儲所述最新數(shù)據(jù)信息。
11、進一步的,所述預設(shè)間隔時間為100~300ms。
12、進一步的,所述數(shù)據(jù)信息的預設(shè)數(shù)量為8000~12000條。
13、進一步的,從第二客戶端獲取對應(yīng)訂閱主題的數(shù)據(jù)信息時,還包括步驟如下:
14、采集需上報的第一數(shù)據(jù);
15、預處理所述第一數(shù)據(jù);
16、轉(zhuǎn)換所述第一數(shù)據(jù)并形成第二數(shù)據(jù);
17、封裝所述第二數(shù)據(jù);
18、發(fā)送所述第二數(shù)據(jù)。
19、進一步的,還包括步驟如下:
20、接收所述第二數(shù)據(jù);
21、判斷第二客戶端是否在超時時間采集需要上報的第一數(shù)據(jù);若是,第二客戶端在線,若否,第二客戶端離線;
22、將所述第二數(shù)據(jù)轉(zhuǎn)換為第三數(shù)據(jù),并向第一客戶端發(fā)送心跳回復,以用于計算心跳回復的數(shù)據(jù)信息;
23、接收心跳回復的數(shù)據(jù)信息。
24、進一步的,所述訂閱主題請求包括機器狀態(tài)主題、任務(wù)狀態(tài)主題、查詢信息主題中的任意一種或多種。
25、相應(yīng)的,本發(fā)明還提供一種執(zhí)行上述mqtt消息異步處理方法的裝置,包括服務(wù)器、第一客戶端以及第二客戶端;其中
26、所述第一客戶端用于訂閱多個主題請求;
27、所述第二客戶端用于發(fā)布對應(yīng)所述主題請求;
28、所述服務(wù)器用于接收第一客戶端的訂閱主題請求、接收第二客戶端的發(fā)布主題請求、以及用于處理所述主題請求內(nèi)的數(shù)據(jù)信息。
29、相應(yīng)的,本發(fā)明還提供一種電子設(shè)備,所述電子設(shè)備包括:
30、至少一個處理器;以及
31、與所述至少一個處理器通信連接的存儲器;其中,
32、所述存儲器存儲有可被所述至少一個處理器執(zhí)行的指令,所述指令被所述至少一個處理器執(zhí)行,以使所述至少一個處理器能夠執(zhí)行權(quán)利要求1-6任一所述的mqtt消息異步處理方法。
33、一種計算機可讀存儲介質(zhì),該計算機可讀存儲介質(zhì)存儲計算機指令,該計算機指令用于使計算機執(zhí)行權(quán)利要求上述mqtt消息異步處理方法。
34、與現(xiàn)有技術(shù)相比,本發(fā)明的有益技術(shù)效果如下
35、本發(fā)明方法通過對不同的主題消息使用不同的進程監(jiān)聽處理不同的訂閱主題,使得可以為不同的主題分配不同業(yè)務(wù)邏輯,使得每個進程可以更專注處理自己訂閱的主題請求,有助于減小代碼之間的耦合度,每個進程可運行于獨立的內(nèi)存空間,即使在高并發(fā)場景下,系統(tǒng)可快速響應(yīng)并處理大量數(shù)據(jù)信息。
36、進一步的,本發(fā)明在將第一數(shù)據(jù)轉(zhuǎn)換成第二數(shù)據(jù)之后,服務(wù)器可直接使用redis的hest命令將上述數(shù)據(jù)信息寫入內(nèi)存數(shù)據(jù)庫或rdis數(shù)據(jù)庫,通過hest命令用于為哈希數(shù)據(jù)結(jié)構(gòu)中的字段賦值,此時服務(wù)器不再需要額外的結(jié)構(gòu)形式轉(zhuǎn)換,提高了數(shù)據(jù)處理的速度及效率。
37、進一步的,本發(fā)明在接收到第二數(shù)據(jù)后生成第三數(shù)據(jù),同時判斷第二客戶端是否在超時時間采集需要上報的第一數(shù)據(jù),由此來判斷第二客戶端離線或在線,并且在離線狀態(tài)下通過服務(wù)器釋放與第二客戶端的資源,關(guān)閉其數(shù)據(jù)庫并釋放分配給第二客戶端的內(nèi)存,避免資源的無謂占用,提升整體的資源利用率,從而保障系統(tǒng)的連續(xù)性和可靠性。通過定制帶網(wǎng)絡(luò)延遲的心跳機制,不僅保持了第二客戶端與服務(wù)器之間的連接,還有效觀測了網(wǎng)絡(luò)質(zhì)量,提高了系統(tǒng)的可靠性和用戶體驗。
1.mqtt消息異步處理方法,其特征在于包括以下步驟:
2.如權(quán)利要求1所述的mqtt消息異步處理方法,其特征在于:所述處理數(shù)據(jù)信息包括步驟如下:
3.如權(quán)利要求2所述的mqtt消息異步處理方法,其特征在于:所述預設(shè)間隔時間為100~300ms。
4.如權(quán)利要求2所述的mqtt消息異步處理方法,其特征在于:所述數(shù)據(jù)信息的預設(shè)數(shù)量為8000~12000條。
5.如權(quán)利要求1所述的mqtt消息異步處理方法,其特征在于:從第二客戶端獲取對應(yīng)訂閱主題的數(shù)據(jù)信息包括步驟如下:
6.如權(quán)利要求5所述的mqtt消息異步處理方法,其特征在于:所述mqtt消息異步處理方法還包括步驟如下:
7.如權(quán)利要求5所述的mqtt消息異步處理方法,其特征在于:所述訂閱主題請求包括機器狀態(tài)主題、任務(wù)狀態(tài)主題、心跳主題、查詢信息主題中的任意一種或多種。
8.一種執(zhí)行如權(quán)利要求1~7任意一項mqtt消息異步處理方法的裝置,其特征在于:
9.一種電子設(shè)備,其特征在于:所述電子設(shè)備包括:
10.一種計算機可讀存儲介質(zhì),其特征在于,該計算機可讀存儲介質(zhì)存儲計算機指令,該計算機指令用于使計算機執(zhí)行權(quán)利要求1~7任一所述的mqtt消息異步處理方法。