本公開涉及應用間消息傳遞領域,具體涉及一種應用與消息隊列高可用連接服務系統、方法、設備和介質。
背景技術:
1、目前系統的消息隊列(mq)高可用性方案主要集中于中間件組件之間的重連機制,這種重連機制未能涵蓋應用與消息隊列(mq)之間的連接與恢復,導致了一個關鍵的缺陷:應用與消息隊列(mq)之間的強耦合關系使得一旦消息隊列(mq)連接發生故障,應用的啟動和運行便無法正常進行,例如當應用連接二個消息隊列(mq)時,有一個消息隊列(mq)掛了由于強耦合關系,應用會啟動失敗。消息傳遞的效率容易受到單點故障的影響,進而影響整個系統的可靠性,例如當對消息隊列(mq)通道或應用未及時響應,會導致當前我們消息隊列(mq)消息堆積。此外,現有系統還缺乏有效的探測機制,無法及時確定消息隊列(mq)通道的可用性,這直接影響了消息傳遞的準確性和可靠性。
技術實現思路
1、基于上述背景技術中提到的問題,本公開提供一種應用與消息隊列高可用連接服務系統、方法、設備和介質,能夠顯著提高系統穩定性和消息傳遞時效性。為解決上述技術問題,本公開提供如下技術方案:
2、作為本公開實施例的一個方面,提供應用與消息隊列高可用連接服務系統,用于實現多個應用間的通信,包括:應用a、應用a的消息隊列、應用c和應用c的消息隊列,應用a的消息隊列包括第一本地隊列和第一遠程隊列,應用c的消息隊列包括第二本地隊列和第二遠程隊列;
3、其中,第一本地隊列用于向應用a發送消息,第一遠程隊列用于接收應用a的消息并將所述消息傳遞到應用c消息隊列的第二本地隊列;第二本地隊列用于接收應用a第一遠程隊列傳遞過來的消息,并將所述消息傳遞至應用c進行消費;而第二遠程隊列用于接收應用c發送來的消息,并將所述消息傳遞給第一本地隊列,第一本地隊列將所述消息傳遞至應用a進行消費;
4、還包括應用b以及應用b的消息隊列;應用b的消息隊列包括第三本地隊列和第三遠程隊列;
5、其中,第一本地隊列中的消息能夠直接傳遞給應用b進行消費,第三本地隊列中的消息也能夠直接傳遞給應用a進行消費。
6、可選地,應用a或應用b也能夠通過第三遠程隊列傳遞消息給第二本地隊列進而再傳遞給應用c進行消費;
7、還包括應用d以及應用d的消息隊列;應用d的消息隊列包括第四本地隊列和第四遠程隊列;
8、其中,第二本地隊列中的消息能夠直接傳遞給應用d進行消費,第四本地隊列中的消息也能夠直接傳遞給應用c進行消費。
9、可選地,應用b也能夠通過第一遠程隊列傳遞消息給第二本地隊列進而再傳遞給應用c進行消費。
10、可選地,應用c能夠通過第四遠程隊列傳遞消息給第一本地隊列或第三本地隊列進而再傳遞給應用a或者應用b進行消費。
11、可選地,應用d也能夠通過第四遠程隊列傳遞消息給第一本地隊列或第三本地隊列進而再傳遞給應用a或者應用b進行消費。
12、作為本公開實施例的另一方面,還包括應用與消息隊列高可用連接服務方法,用于實現多個應用間的通信,使用所述的應用與消息隊列高可用連接服務系統,包括如下步驟:
13、獲取可用線路,其中,可用線路為探測消息發送流程定期標記為可用的發送線路;
14、根據可用線路發送消息;
15、判斷所述消息是否發送成功;如果消息未發送成功則標記該可用線路不可用并短信告警。
16、可選地,探測消息發送流程,包括:
17、開啟發送線路的線程守護任務;
18、開啟固定時間的定時探測;
19、獲取需要探測的發送線路;
20、向需要探測的發送線路發送探測消息;
21、判斷探測消息是否發送成功,如果探測消息發送成功則將該發送線路更新為可用線路,并修改成功時間戳,并等待開啟下一輪探測;如果探測消息發送失敗,則標記探測的發送線路不可用,并關閉該發送線路的消息隊列連接,等待固定時間后重新創建下一輪的探測流程。
22、可選地,獲取需要探測的發送線路包括:
23、獲取上一次發送線路的下標值,然后通過下標值加一的方式獲得下一條發送線路。
24、作為本公開實施例的另一個方面,提供一種電子設備,包括存儲器、處理器及存儲在存儲器上并可在處理器上運行的計算機程序,所述處理器執行所述計算機程序時實現所述的應用與消息隊列高可用連接服務方法。
25、作為本公開實施例的另一個方面,提供一種計算機可讀存儲介質,其上存儲有計算機程序,所述程序被處理器執行時實現所述的應用與消息隊列高可用連接服務方法的步驟。
26、相對于現有技術,本公開通過多個應用程序(apps)與多個消息隊列(mqs)之間的復雜交叉互聯,實現了每個應用與每個消息隊列(mq)之間的直接且冗余的通信鏈路;解決了消息隊列(mq)之間僅作為連接點的問題,同時消除了消息隊列(mq)與應用之間可能存在的斷連風險;確保了即使在單點故障發生時,應用與消息隊列(mq)之間的數據傳輸與處理能力依然能夠無縫銜接,從而顯著提升整個系統的穩健性和容錯能力;強化了系統的穩定性,保證了業務連續性不受單一故障點的影響。
1.應用與消息隊列高可用連接服務系統,用于實現多個應用間的通信,其特征在于,包括:應用a、應用a的消息隊列、應用c和應用c的消息隊列,應用a的消息隊列包括第一本地隊列和第一遠程隊列,應用c的消息隊列包括第二本地隊列和第二遠程隊列;
2.如權利要求1所述的應用與消息隊列高可用連接服務系統,其特征在于,應用a或應用b也能夠通過第三遠程隊列傳遞消息給第二本地隊列進而再傳遞給應用c進行消費。
3.如權利要求1所述的應用與消息隊列高可用連接服務系統,其特征在于,應用b也能夠通過第一遠程隊列傳遞消息給第二本地隊列進而再傳遞給應用c進行消費。
4.如權利要求1所述的應用與消息隊列高可用連接服務系統,其特征在于,應用c能夠通過第四遠程隊列傳遞消息給第一本地隊列或第三本地隊列進而再傳遞給應用a或者應用b進行消費。
5.如權利要求1或4所述的應用與消息隊列高可用連接服務系統,其特征在于,應用d也能夠通過第四遠程隊列傳遞消息給第一本地隊列或第三本地隊列進而再傳遞給應用a或者應用b進行消費。
6.應用與消息隊列高可用連接服務方法,用于實現多個應用間的通信,其特征在于,使用如權利要求1-5任一項所述的應用與消息隊列高可用連接服務系統,包括如下步驟:
7.如權利要求6所述的應用與消息隊列高可用連接服務方法,其特征在于,探測消息發送流程,包括:
8.如權利要求7所述的應用與消息隊列高可用連接服務方法,其特征在于,獲取需要探測的發送線路包括:
9.一種電子設備,包括存儲器、處理器及存儲在存儲器上并可在處理器上運行的計算機程序,其特征在于,所述處理器執行所述計算機程序時實現權利要求6至8任一項所述的應用與消息隊列高可用連接服務方法。
10.一種計算機可讀存儲介質,其上存儲有計算機程序,其特征在于,所述程序被處理器執行時實現權利要求6至8任一項所述的應用與消息隊列高可用連接服務方法的步驟。