本公開(kāi)涉及計(jì)算機(jī)技術(shù)、互聯(lián)網(wǎng),尤其涉及一種消息處理方法、存儲(chǔ)介質(zhì)和電子設(shè)備。
背景技術(shù):
1、消息隊(duì)列是分布式系統(tǒng)中的一種重要的中間件,可以用于應(yīng)用程序和應(yīng)用程序之間的通信,在使用消息隊(duì)列進(jìn)行通信的過(guò)程中,生產(chǎn)者負(fù)責(zé)生產(chǎn)消息并向消息服務(wù)器內(nèi)的各個(gè)分區(qū)發(fā)送消息,相應(yīng)地,消費(fèi)者可以消費(fèi)目標(biāo)分區(qū)內(nèi)的消息。為了保證消息的有序消費(fèi),一個(gè)分區(qū)內(nèi)的消息通常由一個(gè)消費(fèi)者進(jìn)行拉取、消費(fèi)。
2、相關(guān)技術(shù)中使用消息隊(duì)列進(jìn)行通信時(shí),存在消息流量增大,使得消息服務(wù)器內(nèi)部分分區(qū)或者所有分區(qū)內(nèi)的消息較多,對(duì)應(yīng)消費(fèi)者無(wú)法及時(shí)消費(fèi)消息導(dǎo)致的消息堆積問(wèn)題。
技術(shù)實(shí)現(xiàn)思路
1、為了解決上述技術(shù)問(wèn)題,本公開(kāi)的實(shí)施例提供了一種消息處理方法、存儲(chǔ)介質(zhì)和電子設(shè)備。
2、根據(jù)本公開(kāi)實(shí)施例的第一個(gè)方面,提供一種消息處理方法,包括:
3、按照設(shè)定周期,周期性獲取消息服務(wù)器中至少一個(gè)目標(biāo)分區(qū)的消費(fèi)偏移量和生產(chǎn)偏移量;
4、根據(jù)所述消費(fèi)偏移量和生產(chǎn)偏移量,確定至少一個(gè)目標(biāo)分區(qū)中各目標(biāo)分區(qū)的分區(qū)狀態(tài);
5、響應(yīng)于所述分區(qū)狀態(tài)指示有目標(biāo)分區(qū)處于消息堆積狀態(tài),將處于消息堆積狀態(tài)的目標(biāo)分區(qū)的消息消費(fèi)者添加到第一列表;
6、響應(yīng)于所述分區(qū)狀態(tài)指示有目標(biāo)分區(qū)處于消息空閑狀態(tài),將處于消息空閑狀態(tài)的目標(biāo)分區(qū)的消息消費(fèi)者添加第二列表;
7、控制所述第二列表中的消息消費(fèi)者輔助第一列表中的消息消費(fèi)者處理處于消息堆積狀態(tài)的目標(biāo)分區(qū)內(nèi)的消息。
8、在本公開(kāi)的一些可選實(shí)施方式中,所述控制所述第二列表中的消息消費(fèi)者輔助第一列表中的消息消費(fèi)者處理處于消息堆積狀態(tài)的目標(biāo)分區(qū)內(nèi)的消息,包括:
9、讀取所述第一列表;
10、響應(yīng)于所述第一列表不為空,控制所述第二列表中的消息消費(fèi)者根據(jù)所述第一列表中的消息消費(fèi)者的關(guān)聯(lián)信息,處理處于消息堆積狀態(tài)的目標(biāo)分區(qū)內(nèi)的消息。
11、在本公開(kāi)的又一些可選實(shí)施方式中,所述控制所述第二列表中的消息消費(fèi)者輔助第一列表中的消息消費(fèi)者處理處于消息堆積狀態(tài)的目標(biāo)分區(qū)內(nèi)的消息,包括:
12、響應(yīng)于所述第一列表中只有一個(gè)消息消費(fèi)者,將所述一個(gè)消息消費(fèi)者確定為目標(biāo)消費(fèi)者;
13、響應(yīng)于所述第一列表中有兩個(gè)以上的消息消費(fèi)者,從所述兩個(gè)以上的消息消費(fèi)者中選取一個(gè)消息消費(fèi)者作為目標(biāo)消費(fèi)者;
14、從所述目標(biāo)消費(fèi)者的已拉取消息隊(duì)列中獲取并處理待處理消息,所述已拉取消息隊(duì)列根據(jù)所述目標(biāo)消費(fèi)者的關(guān)聯(lián)信息確定;
15、響應(yīng)于所述待處理消息被成功處理完,將所述待處理消息的屬性信息存入對(duì)應(yīng)的已消費(fèi)消息隊(duì)列中,所述已消費(fèi)消息隊(duì)列根據(jù)所述目標(biāo)消費(fèi)者的關(guān)聯(lián)信息確定。
16、在本公開(kāi)的又一些可選實(shí)施方式中,所述將所述待處理消息的屬性信息存入對(duì)應(yīng)的已消費(fèi)消息隊(duì)列中之后,還包括:
17、控制所述目標(biāo)消費(fèi)者將所述待處理消息的屬性信息返回至對(duì)應(yīng)的目標(biāo)分區(qū),以便所述目標(biāo)分區(qū)根據(jù)所述待處理消息的屬性信息更新所述消費(fèi)偏移量。
18、在本公開(kāi)的又一些可選實(shí)施方式中,所述已拉取消息隊(duì)列中包含所述消息消費(fèi)者從目標(biāo)分區(qū)拉取的消息,且所述已拉取消息隊(duì)列被存儲(chǔ)在分布式緩存系統(tǒng)中;
19、所述已消費(fèi)消息隊(duì)列中包含所述消息消費(fèi)者從所述已拉取消息隊(duì)列中獲取并成功處理完成的消息,所述已消費(fèi)消息隊(duì)列被存儲(chǔ)在分布式緩存系統(tǒng)中;
20、所述第一列表和所述第二列表被存儲(chǔ)在分布式緩存系統(tǒng)中。
21、在本公開(kāi)的又一些可選實(shí)施方式中,所述根據(jù)所述消費(fèi)偏移量和生產(chǎn)偏移量,確定至少一個(gè)目標(biāo)分區(qū)中各目標(biāo)分區(qū)的分區(qū)狀態(tài),包括:
22、計(jì)算各目標(biāo)分區(qū)的所述生產(chǎn)偏移量和所述消費(fèi)偏移量的差值;
23、響應(yīng)于所述差值大于第一閾值,確定對(duì)應(yīng)的目標(biāo)分區(qū)的分區(qū)狀態(tài)為消息堆積狀態(tài);
24、響應(yīng)于所述差值不大于第一閾值且大于第二閾值,確定對(duì)應(yīng)的目標(biāo)分區(qū)的分區(qū)狀態(tài)為消息存量正常狀態(tài);
25、響應(yīng)于所述差值不大于所述第二閾值,確定對(duì)應(yīng)的目標(biāo)分區(qū)的分區(qū)狀態(tài)為消息空閑狀態(tài)。
26、在本公開(kāi)的又一些可選實(shí)施方式中,響應(yīng)于所述目標(biāo)分區(qū)的分區(qū)狀態(tài)為消息堆積狀態(tài),所述方法還包括:
27、生成提示信息,所述提示信息用于提示用戶所述目標(biāo)分區(qū)處于消息堆積狀態(tài)。
28、根據(jù)本公開(kāi)實(shí)施例的第二個(gè)方面,提供一種消息處理裝置,包括:
29、獲取模塊,用于按照設(shè)定周期,周期性獲取消息服務(wù)器中至少一個(gè)目標(biāo)分區(qū)的消費(fèi)偏移量和生產(chǎn)偏移量;
30、狀態(tài)確定模塊,用于根據(jù)所述消費(fèi)偏移量和生產(chǎn)偏移量,確定至少一個(gè)目標(biāo)分區(qū)中各目標(biāo)分區(qū)的分區(qū)狀態(tài);
31、第一添加模塊,用于響應(yīng)于所述分區(qū)狀態(tài)指示有目標(biāo)分區(qū)處于消息堆積狀態(tài),將處于消息堆積狀態(tài)的目標(biāo)分區(qū)的消息消費(fèi)者添加到第一列表;
32、第二添加模塊,用于響應(yīng)于所述分區(qū)狀態(tài)指示有目標(biāo)分區(qū)處于消息空閑狀態(tài),將處于消息空閑狀態(tài)的目標(biāo)分區(qū)的消息消費(fèi)者添加到第二列表;
33、消息處理模塊,用于控制所述第二列表中的消息消費(fèi)者輔助第一列表中的消息消費(fèi)者處理處于消息堆積狀態(tài)的目標(biāo)分區(qū)內(nèi)的消息。
34、在本公開(kāi)的又一些可選實(shí)施方式中,所述消息處理模塊包括:
35、列表讀取子模塊,用于讀取所述第一列表;
36、第一處理子模塊,用于響應(yīng)于所述第一列表不為空,控制所述第二列表中的消息消費(fèi)者根據(jù)所述第一列表中的消息消費(fèi)者的關(guān)聯(lián)信息,處理處于消息堆積狀態(tài)的目標(biāo)分區(qū)內(nèi)的消息。
37、在本公開(kāi)的又一些可選實(shí)施方式中,所述消息處理模塊包括:
38、第一確定子模塊,用于響應(yīng)于所述第一列表中只有一個(gè)消息消費(fèi)者,將所述一個(gè)消息消費(fèi)者確定為目標(biāo)消費(fèi)者;
39、第二確定子模塊,用于響應(yīng)于所述第一列表中有兩個(gè)以上的消息消費(fèi)者,從所述兩個(gè)以上的消息消費(fèi)者中選取一個(gè)消息消費(fèi)者作為目標(biāo)消費(fèi)者;
40、第二處理子模塊,用于從所述目標(biāo)消費(fèi)者的已拉取消息隊(duì)列中獲取并處理待處理消息,所述已拉取消息隊(duì)列根據(jù)所述目標(biāo)消費(fèi)者的關(guān)聯(lián)信息確定;
41、存儲(chǔ)子模塊,用于響應(yīng)于所述待處理消息被成功處理完,將所述待處理消息的屬性信息存入對(duì)應(yīng)的已消費(fèi)消息隊(duì)列中,所述已消費(fèi)消息隊(duì)列根據(jù)所述目標(biāo)消費(fèi)者的關(guān)聯(lián)信息確定。
42、在本公開(kāi)的又一些可選實(shí)施方式中,所述消息處理模塊還包括:
43、發(fā)送子模塊,用于控制所述目標(biāo)消費(fèi)者將所述待處理消息的屬性信息返回至對(duì)應(yīng)的目標(biāo)分區(qū),以便所述目標(biāo)分區(qū)根據(jù)所述待處理消息的屬性信息更新所述消費(fèi)偏移量。
44、在本公開(kāi)的又一些可選實(shí)施方式中,所述已拉取消息隊(duì)列中包含所述消息消費(fèi)者從目標(biāo)分區(qū)拉取的消息,且所述已拉取消息隊(duì)列被存儲(chǔ)在分布式緩存系統(tǒng)中;
45、所述已消費(fèi)消息隊(duì)列中包含所述消息消費(fèi)者從所述已拉取消息隊(duì)列中獲取并成功處理完成的消息,所述已消費(fèi)消息隊(duì)列被存儲(chǔ)在分布式緩存系統(tǒng)中;
46、所述第一列表和所述第二列表被存儲(chǔ)在分布式緩存系統(tǒng)中。
47、在本公開(kāi)的又一些可選實(shí)施方式中,所述狀態(tài)確定模塊包括:
48、計(jì)算子模塊,用于計(jì)算各目標(biāo)分區(qū)的所述生產(chǎn)偏移量和所述消費(fèi)偏移量的差值;
49、第三確定子模塊,用于響應(yīng)于所述差值大于第一閾值,確定對(duì)應(yīng)的目標(biāo)分區(qū)的分區(qū)狀態(tài)為消息堆積狀態(tài);
50、第四確定子模塊,用于響應(yīng)于所述差值不大于第一閾值且大于第二閾值,確定對(duì)應(yīng)的目標(biāo)分區(qū)的分區(qū)狀態(tài)為消息存量正常狀態(tài);
51、第五確定子模塊,用于響應(yīng)于所述差值不大于所述第二閾值,確定對(duì)應(yīng)的目標(biāo)分區(qū)的分區(qū)狀態(tài)為消息空閑狀態(tài)。
52、在本公開(kāi)的又一些可選實(shí)施方式中,所述裝置還包括:
53、提示模塊,用于生成提示信息,所述提示信息用于提示用戶所述目標(biāo)分區(qū)處于消息堆積狀態(tài)。
54、根據(jù)本公開(kāi)實(shí)施例的第三個(gè)方面,提供一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述存儲(chǔ)介質(zhì)存儲(chǔ)有計(jì)算機(jī)程序指令,所述計(jì)算機(jī)程序指令被執(zhí)行時(shí),實(shí)現(xiàn)上述消息處理方法。
55、根據(jù)本公開(kāi)實(shí)施例的第四個(gè)方面,提供一種電子設(shè)備,所述電子設(shè)備包括:
56、存儲(chǔ)器,用于存儲(chǔ)計(jì)算機(jī)程序產(chǎn)品;
57、處理器,用于執(zhí)行所述存儲(chǔ)器中存儲(chǔ)的計(jì)算機(jī)程序產(chǎn)品,且所述計(jì)算機(jī)程序產(chǎn)品被執(zhí)行時(shí),實(shí)現(xiàn)上述消息處理方法。
58、根據(jù)本公開(kāi)實(shí)施例的第五個(gè)方面,提供一種計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)程序指令,計(jì)算機(jī)程序指令被處理器執(zhí)行時(shí)實(shí)現(xiàn)上述消息處理方法。
59、基于本公開(kāi)上述實(shí)施例,在通過(guò)消息隊(duì)列進(jìn)行通信時(shí),消息消費(fèi)者可按照設(shè)定周期,周期性獲取目標(biāo)分區(qū)的消費(fèi)偏移量和生產(chǎn)偏移量,進(jìn)而確定目標(biāo)分區(qū)的分區(qū)狀態(tài),實(shí)現(xiàn)在目標(biāo)分區(qū)處于消息堆積狀態(tài)時(shí),將處于消息堆積狀態(tài)的目標(biāo)分區(qū)的消息消費(fèi)者添加到第一列表中,將處于消息空閑狀態(tài)的目標(biāo)分區(qū)的消息消費(fèi)者添加到第二列表中,進(jìn)而控制第二列表中的消息消費(fèi)者能夠處理處于消息堆積狀態(tài)的目標(biāo)分區(qū)的消息。由此,本公開(kāi)技術(shù)方案可以實(shí)現(xiàn)各消息消費(fèi)者自動(dòng)周期性監(jiān)控被分配的目標(biāo)分區(qū)的分區(qū)狀態(tài),并由空閑狀態(tài)的消息消費(fèi)者輔助處理處于消息堆積狀態(tài)的分區(qū)內(nèi)的消息,提高消息處理能力,解決分區(qū)內(nèi)消息的堆積問(wèn)題。
60、下面通過(guò)附圖和實(shí)施例,對(duì)本公開(kāi)的技術(shù)方案做進(jìn)一步的詳細(xì)描述。