本技術(shù)涉及消息傳輸?shù)?,尤其是涉及一種基于mqtt的消息交換方法、裝置、協(xié)議網(wǎng)關(guān)及介質(zhì)。
背景技術(shù):
1、三維數(shù)字孿生仿真系統(tǒng)在現(xiàn)代工業(yè)、智慧城市等領(lǐng)域扮演著至關(guān)重要的角色,它通過實時模擬物理世界的運行,為決策者提供精確的數(shù)據(jù)支持。然而,三維數(shù)字孿生仿真系統(tǒng)與眾多不同廠商的外圍系統(tǒng)(如物聯(lián)網(wǎng)設(shè)備、mqtt服務(wù)器、物聯(lián)網(wǎng)平臺等)進(jìn)行交互時,往往會遇到各種挑戰(zhàn)。這些外圍系統(tǒng)通常使用各自獨特的編碼格式和通信協(xié)議,這要求三維數(shù)字孿生仿真系統(tǒng)必需具備強(qiáng)大的消息格式適配能力。
2、為了實現(xiàn)三維數(shù)字孿生仿真系統(tǒng)與這些外圍系統(tǒng)的正確通信,開發(fā)人員需要在三維仿真平臺中進(jìn)行大量的硬編碼工作,包括構(gòu)建上行數(shù)據(jù)的消息格式拼接邏輯,以確保發(fā)送出去的數(shù)據(jù)能夠被目標(biāo)系統(tǒng)正確識別;同時,還需要實現(xiàn)下行數(shù)據(jù)的消息解析邏輯,以從接收到的數(shù)據(jù)中提取出有價值的信息。這種硬編碼方式雖然能夠解決通信問題,但這種方式產(chǎn)生了大量的消息處理工作,而且這種硬編碼方式導(dǎo)致三維數(shù)字孿生仿真場景的實現(xiàn)邏輯過于臃腫,隨著外圍系統(tǒng)的增加,會存在有一部三維仿真系統(tǒng)場景因為沒有及時全部覆蓋所有目前已經(jīng)支持的外圍系統(tǒng)的適配邏輯,導(dǎo)致其只能和已經(jīng)適配的外圍場景進(jìn)行有效通信,沒有適配的是無法通信的情況。
3、因此,提供一種高效便捷的仿真系統(tǒng)與外圍系統(tǒng)的消息交換方法是本領(lǐng)域技術(shù)人員亟待解決的技術(shù)問題。
技術(shù)實現(xiàn)思路
1、本技術(shù)目的是提供一種基于mqtt的消息交換方法、裝置、協(xié)議網(wǎng)關(guān)及介質(zhì),能夠高效便捷的實現(xiàn)仿真系統(tǒng)與外圍系統(tǒng)的消息交換。
2、第一方面,提供了一種基于mqtt的消息交換方法,由協(xié)議網(wǎng)關(guān)執(zhí)行,所述方法包括:
3、獲取第一設(shè)備發(fā)送的mqtt請求消息,mqtt請求消息包括第一主題和第一消息體,所述第一主題用于指示目的設(shè)備;
4、根據(jù)所述第一主題從消息格式注冊中心查詢第一消息格式定義信息,所述消息格式注冊中心中存儲有主題和消息格式定義信息的映射關(guān)系,所述消息格式定義信息包括主題以及轉(zhuǎn)換動作合集;
5、若消息格式注冊中心存在與第一消息格式定義信息,則利用第一消息格式定義信息中的轉(zhuǎn)換動作合集對所述mqtt請求消息進(jìn)行格式轉(zhuǎn)換,得到轉(zhuǎn)換后的第一消息;
6、將所述轉(zhuǎn)換后的第一消息發(fā)送至所述第一主題對應(yīng)的目的設(shè)備。
7、通過上述技術(shù)方案,在協(xié)議網(wǎng)關(guān)中加入了消息格式注冊中心,以便于三維仿真系統(tǒng)和外圍系統(tǒng)之間進(jìn)行消息通信時,協(xié)議網(wǎng)關(guān)可以依據(jù)請求的主題從消息格式注冊中心中讀取相應(yīng)的消息格式定義信息,并利用消息格式定義信息中的轉(zhuǎn)換動作合集對mqtt請求消息進(jìn)行格式轉(zhuǎn)換,得到轉(zhuǎn)換后的第一消息,發(fā)送至目的設(shè)備,實現(xiàn)了三維仿真系統(tǒng)和外圍之間的消息的靈活通信,可以在無需編寫額外代碼的情況下,高效便捷的與外圍通信系統(tǒng)進(jìn)行通信。
8、在一種可能的實現(xiàn)方式中,所述根據(jù)所述第一主題從消息格式注冊中心查詢第一消息格式定義信息,包括:
9、確定第一設(shè)備是否為外圍系統(tǒng);
10、若第一設(shè)備是外圍系統(tǒng),則將所述第一主題調(diào)整為第一設(shè)備對應(yīng)的主題,并根據(jù)調(diào)整后的第一主題從消息格式注冊中心中查詢與調(diào)整后的第一主題對應(yīng)的第一消息格式定義信息;
11、若第一設(shè)備不是外圍系統(tǒng),則根據(jù)第一主題從消息格式注冊中心中查詢與第一主題對應(yīng)的第一消息格式定義信息。
12、通過上述技術(shù)方案,消息格式注冊中心中設(shè)置的消息格式定義信息中主題對應(yīng)的是外圍系統(tǒng),因此,如果第一設(shè)備是外圍系統(tǒng)時,需要進(jìn)行主題調(diào)整,以便于從消息格式注冊中心中查詢到對應(yīng)的第一消息格式定義信息。
13、在一種可能的實現(xiàn)方式中,當(dāng)所述消息格式定義信息中的轉(zhuǎn)換動作合集包括上行轉(zhuǎn)換動作合集和下行轉(zhuǎn)換動作合集時,
14、所述利用第一消息格式定義信息中的轉(zhuǎn)換動作合集對所述mqtt請求消息進(jìn)行格式轉(zhuǎn)換,得到轉(zhuǎn)換后的第一消息,包括:
15、若第一設(shè)備是外圍系統(tǒng),則利用第一消息格式定義信息中的下行轉(zhuǎn)換動作合集對所述mqtt請求消息進(jìn)行格式轉(zhuǎn)換,得到轉(zhuǎn)換后的第一消息;
16、若第一設(shè)備不是外圍系統(tǒng),則利用第一消息格式定義信息中的上行轉(zhuǎn)換動作合集對所述mqtt請求消息進(jìn)行格式轉(zhuǎn)換,得到轉(zhuǎn)換后的第一消息。
17、通過上述技術(shù)方案,由于消息格式定義信息中的主題對應(yīng)的是外圍系統(tǒng),存在外圍系統(tǒng)向三維仿真系統(tǒng)發(fā)送消息以及三維仿真系統(tǒng)向外圍系統(tǒng)發(fā)送消息兩種情況,可以根據(jù)第一設(shè)備的類型,選擇相應(yīng)的轉(zhuǎn)換動作合集實現(xiàn)消息的格式轉(zhuǎn)換。
18、在一種可能的實現(xiàn)方式中,所述將所述轉(zhuǎn)換后的第一消息發(fā)送至所述第一主題對應(yīng)的目的設(shè)備,包括:
19、確定轉(zhuǎn)換后的第一消息中的目標(biāo)字段的字段類型;所述目標(biāo)字段為轉(zhuǎn)換后的第一消息中的任一字段;
20、若目標(biāo)字段的字段類型為必需字段,則確定所述目標(biāo)字段是否轉(zhuǎn)換成功;
21、當(dāng)轉(zhuǎn)換后的第一消息中的所有必需字段均轉(zhuǎn)換成功后,將所述轉(zhuǎn)換后的第一消息發(fā)送至所述第一主題對應(yīng)的目的設(shè)備。
22、通過上述技術(shù)方案,確定每一個字段的數(shù)據(jù)類型是否必需字段類型;并且對必需字段的轉(zhuǎn)換進(jìn)行校驗,只有所有的必需字段均轉(zhuǎn)換成功后,才將轉(zhuǎn)換后的第一消息發(fā)送到目的設(shè)備,確保了目的設(shè)備能夠接收到完整且準(zhǔn)確的消息,從而提高了通信效率和穩(wěn)定性。
23、在一種可能的實現(xiàn)方式中,所述將所述轉(zhuǎn)換后的第一消息發(fā)送至所述第一主題對應(yīng)的目的設(shè)備之后,還包括:
24、獲取目的設(shè)備發(fā)送的mqtt反饋消息,所述mqtt反饋消息包括第二主題和第二消息體;根據(jù)所述第二主題從消息格式注冊中心查詢第二消息格式定義信息;
25、若消息格式注冊中心存在與第二消息格式定義信息,則利用第二消息格式定義信息對所述mqtt反饋消息進(jìn)行格式轉(zhuǎn)換,得到轉(zhuǎn)換后的第二消息;
26、將所述轉(zhuǎn)換后的第二消息發(fā)送至所述第一設(shè)備。
27、通過上述技術(shù)方案,接收mqtt反饋消息時,基于mqtt反饋消息的第二主題從消息格式注冊中心查詢第二消息格式定義信息,并進(jìn)行格式轉(zhuǎn)化以及數(shù)據(jù)發(fā)送,實現(xiàn)了與第一設(shè)備的雙向通信,使得能夠及時地響應(yīng)和處理來自第一設(shè)備的請求和消息。
28、在一種可能的實現(xiàn)方式中,所述將所述轉(zhuǎn)換后的第一消息發(fā)送至所述第一主題對應(yīng)的目的設(shè)備,包括:
29、確定目標(biāo)消息隊列;
30、將所述轉(zhuǎn)換后的第一消息寫入目標(biāo)消息隊列,以通過所述目標(biāo)消息隊列將所述轉(zhuǎn)換后的第一消息發(fā)送至所述第一主題對應(yīng)的目的設(shè)備。
31、通過上述技術(shù)方案,通過確定目標(biāo)消息隊列,系統(tǒng)可以精準(zhǔn)地選擇一個最符合發(fā)送需求的消息隊列,將轉(zhuǎn)換后的第一消息寫入目標(biāo)消息隊列,可以保證消息在發(fā)送過程中得到有序的處理。
32、在一種可能的實現(xiàn)方式中,所述確定目標(biāo)消息隊列,包括:
33、預(yù)測當(dāng)前的多個消息隊列各自對應(yīng)的發(fā)送完成時刻;根據(jù)多個消息隊列各自對應(yīng)的發(fā)送完成時刻,從多個消息隊列中選擇發(fā)送完成時刻最早的目標(biāo)消息隊列;
34、或,
35、確定目的設(shè)備和第一設(shè)備中的外圍系統(tǒng),根據(jù)預(yù)設(shè)的關(guān)聯(lián)關(guān)系,確定目的設(shè)備和第一設(shè)備中的外圍系統(tǒng)對應(yīng)的目標(biāo)消息隊列,其中,預(yù)設(shè)的關(guān)聯(lián)關(guān)系為多個外圍系統(tǒng)和多個消息隊列的對應(yīng)關(guān)系。
36、通過上述技術(shù)方案,通過預(yù)測當(dāng)前的多個消息隊列各自對應(yīng)的發(fā)送完成時刻,并選擇發(fā)送完成時刻最早的目標(biāo)消息隊列,這種方式充分考慮了各個消息隊列的當(dāng)前狀態(tài),能夠動態(tài)地選擇出最優(yōu)的發(fā)送路徑,確保消息的及時傳輸。當(dāng)需要發(fā)送消息時,可以根據(jù)目的設(shè)備和第一設(shè)備中的外圍系統(tǒng)信息,直接確定對應(yīng)的目標(biāo)消息隊列,這種方式簡化了消息發(fā)送的流程,減少了系統(tǒng)的計算量,提高了發(fā)送效率。
37、第二方面,提供了一種基于mqtt的消息交換裝置,包括:
38、獲取模塊,用于獲取第一設(shè)備發(fā)送的mqtt請求消息,mqtt請求消息包括第一主題和第一消息體,所述第一主題用于指示目的設(shè)備;
39、查詢模塊,用于根據(jù)所述第一主題從消息格式注冊中心查詢第一消息格式定義信息,所述消息格式注冊中心中存儲有主題和消息格式定義信息的映射關(guān)系,所述消息格式定義信息包括主題以及轉(zhuǎn)換動作合集;
40、轉(zhuǎn)換模塊,用于若消息格式注冊中心存在與第一消息格式定義信息,則利用第一消息格式定義信息中的轉(zhuǎn)換動作合集對所述mqtt請求消息進(jìn)行格式轉(zhuǎn)換,得到轉(zhuǎn)換后的第一消息;發(fā)送模塊,用于將所述轉(zhuǎn)換后的第一消息發(fā)送至所述第一主題對應(yīng)的目的設(shè)備。
41、第三方面,提供了一種協(xié)議網(wǎng)關(guān),包括:
42、一個或多個處理器;
43、存儲器;
44、一個或多個應(yīng)用程序,其中一個或多個應(yīng)用程序被存儲在存儲器中并被配置為由一個或多個處理器執(zhí)行,一個或多個程序配置用于:執(zhí)行根據(jù)第一方面中任一可能的實現(xiàn)方式所示的方法的步驟。
45、第四方面,提供了一種計算機(jī)可讀存儲介質(zhì),存儲介質(zhì)存儲有至少一條指令、至少一段程序、代碼集或指令集,至少一條指令、至少一段程序、代碼集或指令集由處理器加載并執(zhí)行以實現(xiàn)如第一方面中任一可能的實現(xiàn)方式所示的方法步驟。
46、第五方面,提供了一種計算機(jī)程序產(chǎn)品,包括計算機(jī)程序,所述計算機(jī)程序被處理器執(zhí)行時實現(xiàn)第一方面中任一可能的實現(xiàn)方式所示的步驟。
47、綜上所述,本技術(shù)包括以下至少一種有益技術(shù)效果:
48、1.在協(xié)議網(wǎng)關(guān)中加入了消息格式注冊中心,以便于三維仿真系統(tǒng)和外圍系統(tǒng)之間進(jìn)行消息通信時,協(xié)議網(wǎng)關(guān)可以依據(jù)請求的主題從消息格式注冊中心中讀取相應(yīng)的消息格式定義信息,并利用消息格式定義信息中的轉(zhuǎn)換動作合集對mqtt請求消息進(jìn)行格式轉(zhuǎn)換,得到轉(zhuǎn)換后的第一消息,發(fā)送至目的設(shè)備,實現(xiàn)了三維仿真系統(tǒng)和外圍之間的消息的靈活通信,可以在無需編寫額外代碼的情況下,高效便捷的與外圍通信系統(tǒng)進(jìn)行通信;
49、2.確定每一個字段的數(shù)據(jù)類型是否必需字段類型;并且對必需字段的轉(zhuǎn)換進(jìn)行校驗,只有所有的必需字段均轉(zhuǎn)換成功后,才將轉(zhuǎn)換后的第一消息發(fā)送到目的設(shè)備,確保了目的設(shè)備能夠接收到完整且準(zhǔn)確的消息,從而提高了通信效率和穩(wěn)定性。