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