本技術屬于消息適配器,尤其涉及一種消息適配器實現(xiàn)系統(tǒng)及方法。
背景技術:
1、在現(xiàn)代分布式系統(tǒng)開發(fā)中,消息中間件(如apache?kafka、pulsar等)被廣泛應用于解耦服務、提高系統(tǒng)可擴展性和可靠性。然而,不同機構由于技術棧、性能需求或已有基礎設施等因素,可能偏好不同的消息隊列解決方案。這導致開發(fā)者在設計系統(tǒng)時需針對特定消息中間件編寫適配代碼,增加了項目維護難度和成本,降低了代碼的復用性和通用性。
技術實現(xiàn)思路
1、基于此,有必要針對上述技術問題,提供一種消息適配器實現(xiàn)系統(tǒng)及方法。
2、第一方面,本技術提供了一種消息適配器實現(xiàn)系統(tǒng),系統(tǒng)包括:消息發(fā)送執(zhí)行器模塊和消息處理器模塊,所述消息發(fā)送執(zhí)行模塊與所述消息處理器模塊相連;
3、所述消息發(fā)送執(zhí)行器模塊,用于獲取消息的類型,并與預先存儲的多個實現(xiàn)類進行匹配,得到所述消息對應的目標實現(xiàn)類,其中,所述目標實現(xiàn)類為多個所述實現(xiàn)類中的一個;
4、所述消息發(fā)送執(zhí)行器模塊,還用于根據(jù)所述目標實現(xiàn)類的消息處理邏輯,對所述消息進行處理,并通過所述spring框架對所述目標實現(xiàn)類標記為需要管理的bean,形成具有注解的消息;
5、所述消息處理器模塊,存放所有標記了hrfaxmessagelistener注解的方法,接收到所述具有注解的消息后,用于根據(jù)所述具有注解的消息,調用對應的所述hrfaxmessagelistener注解的方法,執(zhí)行所述具有注解的消息的處理邏輯。
6、可實施的一些方式中,所述消息發(fā)送執(zhí)行器模塊具有applicationcontextaware接口;
7、所述applicationcontextaware接口,用于通過所述spring框架來監(jiān)聽發(fā)送所述消息的系統(tǒng)啟動;
8、所述消息發(fā)送執(zhí)行器模塊,還用于:
9、構建并初始化一個類變量;
10、將所有hrfaxmessageproducer的消息的實現(xiàn)類,存儲在所述類變量中;
11、當獲取到所述消息后,根據(jù)所述消息的類型,與所述類變量中,預先存儲的所有hrfaxmessageproducer的消息的所述實現(xiàn)類進行匹配,得到目標實現(xiàn)類。
12、可實施的一些方式中,所述消息發(fā)送執(zhí)行器模塊,包括消息發(fā)送器接口;
13、所述消息發(fā)送器接口,用于繼承所述消息發(fā)送執(zhí)行器模塊的所述實現(xiàn)類,并對應實現(xiàn)各個所述實現(xiàn)類的發(fā)送消息邏輯;
14、所述消息發(fā)送器接口,還用于通過spring框架的注解將所述實現(xiàn)類的實例交由spring框架管理。
15、可實施的一些方式中,所述消息處理器模塊包括消息接收處理器;
16、所述消息接收處理器,具有實現(xiàn)spring框架的beanpostprocessor接口的postprocessafterinitialization方法,包括存放所有標記了hrfaxmessagelistener注解的方法,以便接收具有注解的消息時,調用對應的接收消息方法;
17、所述消息接收處理器,用于:
18、對所有bean初始化后,利用java的反射獲取到bean的方法method進行監(jiān)聽,得到監(jiān)聽結果;
19、根據(jù)所述監(jiān)聽結果,篩選出標記了hrfaxmessagelistener注解的方法;
20、將標記了hrfaxmessagelistener注解的方法,存入到一個類變量中;
21、當接收具有注解的消息時,在所述類變量中,調用對應的所述hrfaxmessagelistener注解的方法,執(zhí)行所述具有注解的消息的處理邏輯。
22、可實施的一些方式中,所述消息接收處理器包括消息接收處理器接口;
23、所述消息接收處理器接口,具有實現(xiàn)hrfaxmessageconsumer接口并提供一個標記注解的方法;
24、所述消息接收處理器接口,用于:
25、初始化消息監(jiān)聽邏輯;
26、當監(jiān)聽到具有注解的消息時,在所述消息處理器模塊中,獲取所述具有注解的消息的topic對應標記了hrfaxmessagelistener注解的方法method,并執(zhí)行method。
27、可實施的一些方式中,還包括確認消息器接口模塊;所述確認消息器接口模塊與所述消息處理器模塊連接;
28、所述確認消息器接口模塊,用于繼承新實現(xiàn)類,其中,所述新實現(xiàn)類表示區(qū)別于預先存儲的多個所述實現(xiàn)類;
29、所述確認消息器接口模塊,還用于利用所述新實現(xiàn)類,實現(xiàn)所述消息類型的確認消息邏輯,并在所述具有注解的消息執(zhí)行成功后,調用所述新實現(xiàn)類的確認消息方法,得到消息已經(jīng)被消費。
30、第二方便,本技術提供一種消息適配器實現(xiàn)方法,應用于前述的消息適配器實現(xiàn)系統(tǒng),所述方法包括:
31、獲取消息的類型,并與預先存儲的多個實現(xiàn)類進行匹配,得到所述消息對應的目標實現(xiàn)類,其中,所述目標實現(xiàn)類為多個所述實現(xiàn)類中的一個;
32、根據(jù)所述目標實現(xiàn)類的消息處理邏輯,對所述消息進行處理,并通過所述spring框架對所述目標實現(xiàn)類標記為需要管理的bean,形成具有注解的消息;
33、當接收到所述具有注解的消息后,根據(jù)所述具有注解的消息,調用對應的所述hrfaxmessagelistener注解的方法,執(zhí)行所述具有注解的消息的處理邏輯。
34、第三方面,本技術提供一種計算機設備,包括存儲器和處理器,所述存儲器存儲有計算機程序,所述處理器執(zhí)行所述計算機程序時實現(xiàn)前述的消息適配器實現(xiàn)系統(tǒng)。
35、第四方面,本技術提供一種計算機存儲介質,其上存儲有計算機程序,所述計算機程序被處理器執(zhí)行時實現(xiàn)前述的消息適配器實現(xiàn)系統(tǒng)。
36、第五方便,本技術提供一種計算機程序,所述計算機程序被處理器執(zhí)行時實現(xiàn)前述的消息適配器實現(xiàn)系統(tǒng)。
37、有益效果
38、本技術提供一種消息適配器實現(xiàn)系統(tǒng)及方法,系統(tǒng)包括:消息發(fā)送執(zhí)行器模塊和消息處理器模塊,所述消息發(fā)送執(zhí)行模塊與所述消息處理器模塊相連;所述消息發(fā)送執(zhí)行器模塊,用于獲取消息的類型,并與預先存儲的多個實現(xiàn)類進行匹配,得到所述消息對應的目標實現(xiàn)類,其中,所述目標實現(xiàn)類為多個所述實現(xiàn)類中的一個;所述消息發(fā)送執(zhí)行器模塊,還用于根據(jù)所述目標實現(xiàn)類的消息處理邏輯,對所述消息進行處理,并通過所述spring框架對所述目標實現(xiàn)類標記為需要管理的bean,形成具有注解的消息;所述消息處理器模塊,存放所有標記了hrfaxmessagelistener注解的方法,接收到所述具有注解的消息后,用于根據(jù)所述具有注解的消息,調用對應的所述hrfaxmessagelistener注解的方法,執(zhí)行所述具有注解的消息的處理邏輯。上述系統(tǒng)使得開發(fā)者在設計系統(tǒng)時僅需針對特定消息中間件編寫適配代碼,減少了項目維護難度和成本,提高了代碼的復用性和通用性。從而實現(xiàn)對多種消息中間件的無縫支持,通過配置而非編碼方式輕松切換消息隊列類型,從而提高軟件開發(fā)的靈活性和效率。