System.ArgumentOutOfRangeException: 索引和長(zhǎng)度必須引用該字符串內(nèi)的位置。 參數(shù)名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術(shù)實(shí)現(xiàn)步驟摘要】
本申請(qǐng)涉及計(jì)算機(jī)軟件領(lǐng)域,尤其涉及一種動(dòng)態(tài)路由消息隊(duì)列收發(fā)方法及裝置。
技術(shù)介紹
1、隨著分布式系統(tǒng)、微服務(wù)架構(gòu)的蓬勃發(fā)展,消息隊(duì)列中間件已成為實(shí)現(xiàn)系統(tǒng)解耦、異步通信、流量削峰等關(guān)鍵功能的核心組件。
2、然而,傳統(tǒng)消息隊(duì)列架構(gòu)在配置管理時(shí)需要配置多個(gè)消息隊(duì)列客戶端,管理復(fù)雜易出錯(cuò),同時(shí)消息發(fā)送者和接收者的耦合度高,難以進(jìn)行靈活的消息路由和負(fù)載均衡,且配置和代碼耦合度高,難以維護(hù)。
3、因此如何實(shí)現(xiàn)消息隊(duì)列的靈活配置,以降低系統(tǒng)耦合度,是當(dāng)前需要解決的技術(shù)問題。
技術(shù)實(shí)現(xiàn)思路
1、本申請(qǐng)?zhí)峁┝艘环N動(dòng)態(tài)路由消息隊(duì)列收發(fā)方法及裝置,以解決如何實(shí)現(xiàn)消息隊(duì)列的靈活配置,以降低系統(tǒng)耦合度的技術(shù)問題。
2、為了解決上述技術(shù)問題,第一方面,本申請(qǐng)實(shí)施例提供了一種動(dòng)態(tài)路由消息隊(duì)列收發(fā)方法,包括:
3、通過切面類攔截包含有第一注解的方法對(duì)象;其中,所述第一注解包括消息發(fā)送單元信息或者消息接收單元信息;
4、當(dāng)所述第一注解為消息發(fā)送單元信息時(shí),根據(jù)所述消息發(fā)送單元信息,從生產(chǎn)者集合中選擇對(duì)應(yīng)的消息發(fā)送單元,通過所述消息發(fā)送單元將對(duì)應(yīng)所述方法對(duì)象中的消息發(fā)送至對(duì)應(yīng)消息隊(duì)列;
5、當(dāng)所述第一注解為消息接收單元信息時(shí),將對(duì)應(yīng)所述方法對(duì)象添加至消費(fèi)者集合中,并根據(jù)所述第一注釋中包含的消息接收單元信息,將所述方法對(duì)象作為消息接收單元,以處理對(duì)應(yīng)消息隊(duì)列的消息。
6、相比于現(xiàn)有技術(shù),本申請(qǐng)實(shí)施例具有如下有益效果:通過面向切面編程技術(shù)
7、在本申請(qǐng)第一方面的一些實(shí)施例中,在通過切面類攔截包含有第一注解的方法對(duì)象之前,還包括:
8、讀取預(yù)設(shè)的配置信息,根據(jù)所述配置信息構(gòu)建若干消息發(fā)送單元以及若干消息接收單元;
9、對(duì)所有所述消息發(fā)送單元進(jìn)行動(dòng)態(tài)路由封裝,獲取雙字典結(jié)構(gòu)的生產(chǎn)者集合;
10、對(duì)所有所述消息接收單元進(jìn)行動(dòng)態(tài)路由封裝,獲取單字典結(jié)構(gòu)的消費(fèi)者集合。
11、相比現(xiàn)有技術(shù),上述實(shí)施例具有以下有益效果:通過自動(dòng)讀取配置文件,從而動(dòng)態(tài)創(chuàng)建和管理消息隊(duì)列對(duì)應(yīng)的消息發(fā)送單元(即生產(chǎn)者)以及消息接收單元(即消費(fèi)者),從而實(shí)現(xiàn)配置與業(yè)務(wù)代碼的解耦,提高后續(xù)系統(tǒng)的維護(hù)與升級(jí);此外,通過動(dòng)態(tài)路由封裝,從而實(shí)現(xiàn)后續(xù)動(dòng)態(tài)路由,提高消息發(fā)送單元與消息接收單元的管理效率。
12、在本申請(qǐng)第一方面的一些實(shí)施例中,所述對(duì)所有所述消息發(fā)送單元進(jìn)行動(dòng)態(tài)路由封裝,獲取雙字典結(jié)構(gòu)的生產(chǎn)者集合,包括:
13、所述生產(chǎn)者集合包括:第一字典和第二字典;
14、將各消息發(fā)送單元的名稱作為索引值,構(gòu)建單層結(jié)構(gòu)的第一字典;
15、根據(jù)消息發(fā)送單元的名稱,對(duì)消息發(fā)送單元進(jìn)行分組,并將組名作為第二字典第一層的索引值,將消息發(fā)送單元的名稱作為第二字典第二層的索引值,構(gòu)建雙層結(jié)構(gòu)的第二字典。
16、相比現(xiàn)有技術(shù),上述實(shí)施例具有以下有益效果:通過對(duì)消息發(fā)送單元以及消息接收單元進(jìn)行雙層映射,提高了生產(chǎn)者動(dòng)態(tài)路由的效率,進(jìn)一步提高了消息發(fā)送的可靠性。
17、在本申請(qǐng)第一方面的一些實(shí)施例中,所述根據(jù)所述第一注解中包含的消息發(fā)送單元信息,從生產(chǎn)者集合中選擇對(duì)應(yīng)的生產(chǎn)者,包括:
18、所述消息發(fā)送單元信息包括:消息發(fā)送單元的名稱;
19、根據(jù)所述消息發(fā)送單元的名稱,判斷所述第二字典中是否存在對(duì)應(yīng)的消息發(fā)送單元;
20、若第二字典中存在對(duì)應(yīng)的消息發(fā)送單元,則返回對(duì)應(yīng)的消息發(fā)送單元;否則判斷所述第一字典中是否存在對(duì)應(yīng)的消息發(fā)送單元;
21、若第一字典中存在對(duì)應(yīng)的消息發(fā)送單元,則返回對(duì)應(yīng)的消息發(fā)送單元;否則返回預(yù)設(shè)消息發(fā)送單元。
22、相比現(xiàn)有技術(shù),上述實(shí)施例具有以下有益效果:首先通過雙層結(jié)構(gòu)的第二字典,結(jié)合兩個(gè)索引值進(jìn)行動(dòng)態(tài)路由,有效提高消息發(fā)送單元的路由效率;此外在整個(gè)路由過程中,采用兩個(gè)字典進(jìn)行動(dòng)態(tài)路由,保證可以選擇到可用的消息發(fā)送單元,提高后續(xù)消息發(fā)送的可靠性。
23、在本申請(qǐng)第一方面的一些實(shí)施例中,所述根據(jù)所述第二注釋中包含的消息接收單元信息,將所述方法對(duì)象作為消息接收單元,以處理對(duì)應(yīng)消息隊(duì)列的消息,包括:
24、所述消息接收單元信息包括:監(jiān)聽隊(duì)列名稱以及消息標(biāo)簽;
25、通過所述消息接收單元訂閱所述監(jiān)聽隊(duì)列名稱對(duì)應(yīng)的消息隊(duì)列的消息,并使所述消息接收單元處理與所述消息標(biāo)簽對(duì)應(yīng)的消息。
26、相比現(xiàn)有技術(shù),上述實(shí)施例具有以下有益效果:將注解中包含需要監(jiān)聽的隊(duì)列名稱以及需要處理的消息,結(jié)合切面編程技術(shù),可以靈活處理消息,同時(shí)將業(yè)務(wù)代碼與消息隊(duì)列調(diào)用邏輯解耦,實(shí)現(xiàn)零侵入式集成。
27、第二方面,本申請(qǐng)實(shí)施例還提供一種動(dòng)態(tài)路由消息隊(duì)列收發(fā)裝置,包括:攔截模塊、消息發(fā)送模塊以及消息處理模塊;
28、所述攔截模塊,用于通過切面類攔截包含有第一注解的方法對(duì)象;其中,所述第一注解包括消息發(fā)送單元信息或者消息接收單元信息;
29、所述消息發(fā)送模塊,用于當(dāng)所述第一注解為消息發(fā)送單元信息時(shí),根據(jù)所述消息發(fā)送單元信息,從生產(chǎn)者集合中選擇對(duì)應(yīng)的消息發(fā)送單元,通過所述消息發(fā)送單元將對(duì)應(yīng)所述方法對(duì)象中的消息發(fā)送至對(duì)應(yīng)消息隊(duì)列;
30、所述消息處理模塊,用于當(dāng)所述第一注解為消息接收單元信息時(shí),將對(duì)應(yīng)所述方法對(duì)象添加至消費(fèi)者集合中,并根據(jù)所述第一注釋中包含的消息接收單元信息,將所述方法對(duì)象作為消息接收單元,以處理對(duì)應(yīng)消息隊(duì)列的消息。
31、在本申請(qǐng)第二方面的一些實(shí)施例中,在通過切面類攔截包含有第一注解的方法對(duì)象之前,還包括:
32、讀取預(yù)設(shè)的配置信息,根據(jù)所述配置信息構(gòu)建若干消息發(fā)送單元以及若干消息接收單元;
33、對(duì)所有所述消息發(fā)送單元進(jìn)行動(dòng)態(tài)路由封裝,獲取雙字典結(jié)構(gòu)的生產(chǎn)者集合;
34、對(duì)所有所述消息接收單元進(jìn)行動(dòng)態(tài)路由封裝,獲取單字典結(jié)構(gòu)的消費(fèi)者集合。
35、在本申請(qǐng)第二方面的一些實(shí)施例中,所述對(duì)所有所述消息發(fā)送單元進(jìn)行動(dòng)態(tài)路由封裝,獲取雙字典結(jié)構(gòu)的生產(chǎn)者集合,包括:
36、所述生產(chǎn)者集合包括:第一字典和第二字典;
37、將各消息發(fā)送單元的名稱作為索引值,構(gòu)建單層結(jié)構(gòu)的第一字典;
38、根據(jù)消息發(fā)送單元的名稱,對(duì)消息發(fā)送單元進(jìn)行分組,并將組名作為第二字典第一層的索引值,將消息發(fā)送單元的名稱作為第二字典第二層的索引值,構(gòu)建雙層結(jié)構(gòu)的第二字典。
39、在本申請(qǐng)第二方面的一些實(shí)施例中,所述根據(jù)所述消息發(fā)送單元信息,從生產(chǎn)者集合中選擇對(duì)應(yīng)的消息發(fā)送單元,包括:
40、所述消息發(fā)送單元信息包括:消息發(fā)送單元的名稱;
<本文檔來自技高網(wǎng)...【技術(shù)保護(hù)點(diǎn)】
1.一種動(dòng)態(tài)路由消息隊(duì)列收發(fā)方法,其特征在于,包括:
2.如權(quán)利要求1所述的一種動(dòng)態(tài)路由消息隊(duì)列收發(fā)方法,其特征在于,在通過切面類攔截包含有第一注解的方法對(duì)象之前,還包括:
3.如權(quán)利要求2所述的一種動(dòng)態(tài)路由消息隊(duì)列收發(fā)方法,其特征在于,所述對(duì)所有所述消息發(fā)送單元進(jìn)行動(dòng)態(tài)路由封裝,獲取雙字典結(jié)構(gòu)的生產(chǎn)者集合,包括:
4.如權(quán)利要求3所述的一種動(dòng)態(tài)路由消息隊(duì)列收發(fā)方法,其特征在于,所述根據(jù)所述第一注解中包含的消息發(fā)送單元信息,從生產(chǎn)者集合中選擇對(duì)應(yīng)的生產(chǎn)者,包括:
5.如權(quán)利要求1所述的一種動(dòng)態(tài)路由消息隊(duì)列收發(fā)方法,其特征在于,所述根據(jù)所述第二注釋中包含的消息接收單元信息,將所述方法對(duì)象作為消息接收單元,以處理對(duì)應(yīng)消息隊(duì)列的消息,包括:
6.一種動(dòng)態(tài)路由消息隊(duì)列收發(fā)裝置,其特征在于,包括:攔截模塊、消息發(fā)送模塊以及消息處理模塊;
7.如權(quán)利要求6所述的一種動(dòng)態(tài)路由消息隊(duì)列收發(fā)裝置,其特征在于,在通過切面類攔截包含有第一注解的方法對(duì)象之前,還包括:
8.如權(quán)利要求7所述的一種動(dòng)態(tài)路由消息隊(duì)列收發(fā)裝置,
9.如權(quán)利要求8所述的一種動(dòng)態(tài)路由消息隊(duì)列收發(fā)裝置,其特征在于,所述根據(jù)所述消息發(fā)送單元信息,從生產(chǎn)者集合中選擇對(duì)應(yīng)的消息發(fā)送單元,包括:
10.如權(quán)利要求1所述的一種動(dòng)態(tài)路由消息隊(duì)列收發(fā)裝置,其特征在于,所述根據(jù)所述第二注釋中包含的消息接收單元信息,將所述方法對(duì)象作為消息接收單元,以處理對(duì)應(yīng)消息隊(duì)列的消息,包括:
...【技術(shù)特征摘要】
1.一種動(dòng)態(tài)路由消息隊(duì)列收發(fā)方法,其特征在于,包括:
2.如權(quán)利要求1所述的一種動(dòng)態(tài)路由消息隊(duì)列收發(fā)方法,其特征在于,在通過切面類攔截包含有第一注解的方法對(duì)象之前,還包括:
3.如權(quán)利要求2所述的一種動(dòng)態(tài)路由消息隊(duì)列收發(fā)方法,其特征在于,所述對(duì)所有所述消息發(fā)送單元進(jìn)行動(dòng)態(tài)路由封裝,獲取雙字典結(jié)構(gòu)的生產(chǎn)者集合,包括:
4.如權(quán)利要求3所述的一種動(dòng)態(tài)路由消息隊(duì)列收發(fā)方法,其特征在于,所述根據(jù)所述第一注解中包含的消息發(fā)送單元信息,從生產(chǎn)者集合中選擇對(duì)應(yīng)的生產(chǎn)者,包括:
5.如權(quán)利要求1所述的一種動(dòng)態(tài)路由消息隊(duì)列收發(fā)方法,其特征在于,所述根據(jù)所述第二注釋中包含的消息接收單元信息,將所述方法對(duì)象作為消息接收單元,以處理對(duì)應(yīng)消息隊(duì)列的消息,包括:
6.一種動(dòng)...
【專利技術(shù)屬性】
技術(shù)研發(fā)人員:麥淼,范玉平,羅飄,
申請(qǐng)(專利權(quán))人:廣東南方智媒科技有限公司,
類型:發(fā)明
國(guó)別省市:
還沒有人留言評(píng)論。發(fā)表了對(duì)其他瀏覽者有用的留言會(huì)獲得科技券。