本發(fā)明涉及計算機技術(shù)領(lǐng)域,特別是涉及一種海量消息的處理方法和裝置。
背景技術(shù):
目前保險已逐步深入到了人們的日常生活中,保險種類也是日益繁多。為了能夠讓客戶更便捷的了解保險信息,保險公司通常會主動向客戶發(fā)送各種消息。如果在晚上休息時間給客戶發(fā)送消息,勢必會給客戶帶來煩擾。為了避免這一問題,對于不需要實時發(fā)送的消息保險公司通常會在工作時間發(fā)送。由此導(dǎo)致消息平臺會積壓海量的消息,使得大量的消息發(fā)送延遲。
技術(shù)實現(xiàn)要素:
基于此,有必要針對上述技術(shù)問題,提供一種能夠有效緩解海量消息積壓提高消息發(fā)送效率的海量消息的處理方法和裝置。
一種海量消息的處理方法,所述方法包括:
生成job,所述job包括一個主job和多個子job;
利用主job抓取待處理消息,對所述待處理消息進行分組,將分組后的待處理消息分配至多個子job;
利用多個子job對分配到的待處理消息并發(fā)執(zhí)行發(fā)送操作。
在其中一個實施例中,所述利用主job抓取待處理消息,對所述待處理消息進行分組,將分組后的待處理消息分配至多個子job包括:
獲取子job任務(wù)量閾值;
利用主job根據(jù)子job任務(wù)量閾值抓取子job對應(yīng)的待處理消息;
將抓取到的待處理消息設(shè)置為一個任務(wù)組,并為任務(wù)組添加對應(yīng)的標(biāo)簽;
將添加標(biāo)簽后的任務(wù)組分配至子job;
重復(fù)執(zhí)行所述利用主job根據(jù)子job任務(wù)量閾值抓取子job對應(yīng)的待處理消息,直至為每個子job分配相應(yīng)的任務(wù)組。
在其中一個實施例中,所述利用主job抓取待處理消息,對所述待處理消息進行分組,將分組后的待處理消息分配至多個子job包括:
利用主job抓取多個待處理消息;
獲取子job任務(wù)量閾值;
根據(jù)子job任務(wù)量閾值對抓取到的待處理消息進行分組,得到多個任務(wù)組;
對多個任務(wù)組分別添加對應(yīng)的標(biāo)簽,將添加標(biāo)簽后的任務(wù)組分配至多個子job。
在其中一個實施例中,在所述利用多個子job對分配到的待處理消息并發(fā)執(zhí)行發(fā)送操作之后,還包括:
判斷所述子job是否對待處理消息執(zhí)行完發(fā)送操作;
若是,則計算已執(zhí)行完發(fā)送操作的子job數(shù)量;
根據(jù)已執(zhí)行完發(fā)送操作的子job數(shù)量再生成數(shù)量相等的子job;
利用主job對新生成的子job分配待處理消息,以使得新生成的子job對分配到的待處理消息并發(fā)執(zhí)行發(fā)送操作。
在其中一個實施例中,所述利用多個子job對分配到的待處理消息并發(fā)執(zhí)行發(fā)送操作包括:
利用主job將待處理消息對應(yīng)的客戶標(biāo)識和消息模板標(biāo)識發(fā)送至子job;
子job根據(jù)所述消息模板標(biāo)識獲取對應(yīng)的消息模板,并對消息模板進行拼裝;
利用子job將拼裝后的消息模板通過客戶標(biāo)識發(fā)送至客戶終端。
一種海量消息的處理裝置,所述裝置包括:
生成模塊,用于生成job,所述job包括一個主job和多個子job;
分配模塊,用于利用主job抓取待處理消息,對所述待處理消息進行分組,將分組后的待處理消息分配至多個子job;
發(fā)送模塊,用于利用多個子job對分配到的待處理消息并發(fā)執(zhí)行發(fā)送操作。
在其中一個實施例中,所述分配模塊還用于獲取子job任務(wù)量閾值;利用主job根據(jù)子job任務(wù)量閾值抓取子job對應(yīng)的待處理消息;將抓取到的待處理消息設(shè)置為一個任務(wù)組,并為任務(wù)組添加對應(yīng)的標(biāo)簽;將添加標(biāo)簽后的任務(wù) 組分配至子job;重復(fù)執(zhí)行所述利用主job根據(jù)子job任務(wù)量閾值抓取子job對應(yīng)的待處理消息,直至為每個子job分配相應(yīng)的任務(wù)組。
在其中一個實施例中,所述分配模塊還用于利用主job抓取多個待處理消息;獲取子job任務(wù)量閾值;根據(jù)子job任務(wù)量閾值對抓取到的待處理消息進行分組,得到多個任務(wù)組;對多個任務(wù)組分別添加對應(yīng)的標(biāo)簽,將添加標(biāo)簽后的任務(wù)組分配至多個子job。
在其中一個實施例中,所述裝置還包括:
判斷模塊,用于判斷所述子job是否對待處理消息執(zhí)行完發(fā)送操作;
計算模塊,用于若所述子job對待處理消息執(zhí)行完發(fā)送操作,則計算已執(zhí)行完發(fā)送操作的子job數(shù)量;
所述生成模塊還用于根據(jù)已執(zhí)行完發(fā)送操作的子job數(shù)量再生成數(shù)量相等的子job;所述分配模塊還用于利用主job對新生成的子job分配待處理消息;所述發(fā)送模塊還用于新生成的子job對分配到的待處理消息并發(fā)執(zhí)行發(fā)送操作。
在其中一個實施例中,所述發(fā)送模塊還用于利用主job將待處理消息對應(yīng)的客戶標(biāo)識和消息模板標(biāo)識發(fā)送至子job;子job根據(jù)所述消息模板標(biāo)識獲取對應(yīng)的消息模板,并對消息模板進行拼裝;利用子job將拼裝后的消息模板根據(jù)客戶標(biāo)識發(fā)送至客戶終端。
上述海量消息的處理方法和裝置,通過生成主job和多個子job,利用主job抓取待處理消息,對待處理消息進行分組,并且將分組后的待處理消息分配至多個子job。利用多個子job對分配到的待處理消息并發(fā)執(zhí)行發(fā)送操作。由于通過主job對多個子job分配待處理消息,多個子job對分配到的待處理消息執(zhí)行并發(fā)發(fā)送操作,因此極大提高了待處理消息的發(fā)送效率,有效緩解了海量信息的積壓。
附圖說明
圖1為一個實施例中海量消息的處理方法的流程圖;
圖2為一個實施例中服務(wù)器的結(jié)構(gòu)示意圖;
圖3為一個實施例中海量消息的處理裝置的結(jié)構(gòu)示意圖;
圖4為一個實施例中海量消息的處理系統(tǒng)的結(jié)構(gòu)示意圖。
具體實施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進行進一步詳細說明。應(yīng)當(dāng)理解,此處描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
在一個實施例中,如圖1所示,提供了一種海量消息的處理方法,以該方法應(yīng)用于服務(wù)器為例進行說明,具體包括:
102,生成job,job包括一個主job和多個子job。
服務(wù)器上部署了數(shù)據(jù)庫,優(yōu)選的,數(shù)據(jù)庫可以是oracle數(shù)據(jù)庫。服務(wù)器在數(shù)據(jù)庫中生成job(即作業(yè))。其中,按照消息處理的邏輯將job分為主job和子job,其中,主job為一個,子job為多個。主job用于對每個子job分配待處理消息,子job用于對待處理消息進行發(fā)送。
104,利用主job抓取待處理消息,對待處理消息進行分組,將分組后的待處理消息分配至多個子job。
服務(wù)器利用主job在數(shù)據(jù)庫中查詢待處理消息的數(shù)量,抓取待處理消息,并將抓取到的待處理消息進行分組。其中,消息包括短信、社交網(wǎng)絡(luò)消息和郵件等。消息具有對應(yīng)的業(yè)務(wù)類型,其中,業(yè)務(wù)類型包括保險業(yè)務(wù)和銀行業(yè)務(wù)等。例如,消息可以是與保險業(yè)務(wù)相關(guān)的短信。
服務(wù)器利用主job根據(jù)任務(wù)組對應(yīng)的標(biāo)簽將分組后的待處理消息分配至子job。其中,服務(wù)器可以利用主job可以逐一為每個子job分配待處理消息,也可以利用主job集中為每個子job分配待處理消息。
具體的,服務(wù)器利用主job根據(jù)子job任務(wù)量閾值抓取子job對應(yīng)的待處理消息;將抓取到的待處理消息設(shè)置為一個任務(wù)組,并為任務(wù)組添加對應(yīng)的標(biāo)簽;將添加標(biāo)簽后的任務(wù)組分配至子job,重復(fù)執(zhí)行利用主job根據(jù)子job任務(wù)量閾值抓取子job對應(yīng)的待處理消息,直至為每個子job分配對應(yīng)的任務(wù)組。由此通過主job逐一為每個子job分配了相應(yīng)的待處理消息。
服務(wù)器還可以利用主job抓取多個待處理消息;根據(jù)子job任務(wù)量閾值對 抓取到的待處理消息進行分組,得到多個任務(wù)組;對多個任務(wù)組分別添加對應(yīng)的標(biāo)簽。主job根據(jù)標(biāo)簽將多個任務(wù)組分別分配至多個子job,以使得每個子job都分配到相應(yīng)的任務(wù)組。由此通過主job集中對每個子job分配了相應(yīng)的待處理消息。
106,利用多個子job對分配到的待處理消息并發(fā)執(zhí)行發(fā)送操作。
多個子job對分配到的待處理消息并發(fā)執(zhí)行發(fā)送操作。具體的,子job根據(jù)分配到的待處理消息獲取對應(yīng)的客戶標(biāo)識,根據(jù)客戶標(biāo)識將待處理消息發(fā)送至對應(yīng)的客戶終端??蛻艚K端包括臺式電腦、個人筆記本電腦、平板電腦以及智能手機登??蛻魳?biāo)識可以是手機號碼、社交網(wǎng)絡(luò)賬號以及電子郵箱等。
本實施例中,通過生成主job和多個子job,利用主job抓取待處理消息,對待處理消息進行分組,并且將分組后的待處理消息分配至多個子job。利用多個子job對分配到的待處理消息并發(fā)執(zhí)行發(fā)送操作。由于通過主job對多個子job分配待處理消息,多個子job對分配到的待處理消息執(zhí)行并發(fā)發(fā)送操作,因此極大提高了待處理消息的發(fā)送效率,有效緩解了海量信息的積壓。
在一個實施例中,利用主job抓取待處理消息,對待處理消息進行分組,將分組后的待處理消息分配至多個子job包括:利用主job根據(jù)子job任務(wù)量閾值抓取子job對應(yīng)的待處理消息;將抓取到的待處理消息設(shè)置為一個任務(wù)組,并為任務(wù)組添加對應(yīng)的標(biāo)簽;將添加標(biāo)簽后的任務(wù)組分配至子job;重復(fù)執(zhí)行利用主job根據(jù)子job任務(wù)量閾值抓取子job對應(yīng)的待處理消息,直至為每個子job分配相應(yīng)的任務(wù)組。
服務(wù)器利用主job根據(jù)子job任務(wù)量閾值分別為每個子job來抓取待處理消息。子job任務(wù)量閾值可以是預(yù)先計算出的。子job任務(wù)量閾值可以是多個子job在預(yù)設(shè)時間內(nèi)發(fā)送消息的總量的平均值。主job根據(jù)子job任務(wù)量閾值在數(shù)據(jù)庫中抓取待處理消息,將抓取到的待處理消息設(shè)置為一個任務(wù)組,并且為任務(wù)組添加對應(yīng)的標(biāo)簽。主job將添加標(biāo)簽后的任務(wù)組分配至子job。主job重復(fù)執(zhí)行這一動作,直至為每個子job分配相應(yīng)的任務(wù)組。。
進一步的,主job還可以根據(jù)業(yè)務(wù)類型來獲取待處理消息。其中業(yè)務(wù)類型包括保險業(yè)務(wù)和銀行業(yè)務(wù)等。每個子job可以被配置所發(fā)送消息對應(yīng)的業(yè)務(wù)類 型。子job可以被配置為發(fā)送相同業(yè)務(wù)類型的消息,也可以被配置為發(fā)送不同業(yè)務(wù)類型的消息。
由于每個業(yè)務(wù)類型對應(yīng)的待處理消息的數(shù)量巨大,而子job的數(shù)量是有限的,因此,可以將所有的子job可以被配置為發(fā)送相同業(yè)務(wù)類型的消息。服務(wù)器利用主job查詢每個業(yè)務(wù)類型對應(yīng)的待處理消息的數(shù)量,根據(jù)待處理消息的數(shù)量對多個業(yè)務(wù)類型進行排序。優(yōu)選的,待處理消息的數(shù)量越多的,對應(yīng)的業(yè)務(wù)類型排位越高,反之,業(yè)務(wù)類型的排位則越低。
可以利用主job根據(jù)業(yè)務(wù)類型的排序?qū)ψ觠ob分配任務(wù)。具體的,主job根據(jù)業(yè)務(wù)類型的排序,獲取排在第一位的業(yè)務(wù)類型,將所有子job配置為該業(yè)務(wù)類型。利用主job根據(jù)子job的任務(wù)量閾值抓取該業(yè)務(wù)類型的待處理消息,將抓取到的待處理消息設(shè)置為一個任務(wù)組,并為任務(wù)組添加對應(yīng)的標(biāo)簽,將添加標(biāo)簽后的任務(wù)組分配至子job,逐一為每個子job分配了相應(yīng)的任務(wù)組。所有的子job對分配到的任務(wù)組并發(fā)執(zhí)行發(fā)送操作,將該業(yè)務(wù)類型的待處理消息全部處理完。服務(wù)器利用主job獲取排在第二位的業(yè)務(wù)類型,并對所有子job配置相應(yīng)的業(yè)務(wù)類型,重復(fù)上述過程,直至將每個業(yè)務(wù)類型對應(yīng)的待處理消息都發(fā)送完畢。由于主job是根據(jù)業(yè)務(wù)類型的排序來對子job分配任務(wù),因此能夠?qū)Υ幚硐?shù)量最多的業(yè)務(wù)類型進行優(yōu)先處理,有效緩解了海量信息的積壓。
如果多個業(yè)務(wù)類型對應(yīng)的待處理消息的數(shù)量之間的差別在預(yù)設(shè)范圍內(nèi),則可以對多個業(yè)務(wù)類型對應(yīng)的待處理消息同時進行處理。具體的,利用主job獲取業(yè)務(wù)類型,對多個子job分別配置不同的業(yè)務(wù)類型??梢岳弥鱦ob對每個子job隨機配置對應(yīng)的業(yè)務(wù)類型。利用主job根據(jù)子job任務(wù)量閾值抓取子job被配置的業(yè)務(wù)類型所對應(yīng)的待處理消息,將抓取到的待處理消息設(shè)置為一個任務(wù)組,并為任務(wù)組添加對應(yīng)的標(biāo)簽,將添加標(biāo)簽后的任務(wù)組分配至子job,直至主job為每個子job分配相應(yīng)的任務(wù)組。由于子job分別被配置了不同的業(yè)務(wù)類型,因此可以對多個業(yè)務(wù)類型的待處理消息進行并發(fā)處理,由此方便不同的用戶能夠及早接收到相應(yīng)的消息。
在一個實施例中,利用主job抓取待處理消息,對待處理消息進行分組, 將分組后的待處理消息分配至多個子job包括:利用主job抓取多個待處理消息;獲取子job任務(wù)量閾值;根據(jù)子job任務(wù)量閾值對抓取到的待處理消息進行分組,得到多個任務(wù)組;對多個任務(wù)組分別添加對應(yīng)的標(biāo)簽,將添加標(biāo)簽后的任務(wù)組分配至多個子job。
本實施例中,利用主job查詢數(shù)據(jù)庫中待處理信息的數(shù)量,根據(jù)子job的任務(wù)量閾值計算所需子job總量。由于數(shù)據(jù)庫的處理能力是有一定限度的,為了確保數(shù)據(jù)庫的平穩(wěn)運行,因此在數(shù)據(jù)庫內(nèi)同時運行的子job的數(shù)量是一定的。利用主job獲取在數(shù)據(jù)庫中同時運行的子job的數(shù)量,并且獲取子job任務(wù)量閾值。利用主job根據(jù)子job任務(wù)量閾值與數(shù)據(jù)庫中同時運行的子job的數(shù)量計算子job并發(fā)操作待處理消息的總量,即要抓取的多個待處理消息的數(shù)量。將抓取到的待處理消息根據(jù)子job任務(wù)量閾值進行拆分,得到多個任務(wù)組,由此通過主job集中對每個子job分配對應(yīng)的任務(wù)組。
進一步的,服務(wù)器利用主job查詢每個業(yè)務(wù)類型對應(yīng)的待處理消息的數(shù)量,根據(jù)待處理消息的數(shù)量對多個業(yè)務(wù)類型進行排序。優(yōu)選的,待處理消息的數(shù)量越多的,對應(yīng)的業(yè)務(wù)類型排位越高,反之,業(yè)務(wù)類型的排位則越低。服務(wù)器可以利用主job根據(jù)業(yè)務(wù)類型的排序?qū)ψ觠ob分配任務(wù)。從而能夠?qū)Υ幚硐?shù)量最多的業(yè)務(wù)類型進行優(yōu)先處理,有效緩解了海量信息的積壓。
在一個實施例中,在利用多個子job對分配到的待處理消息并發(fā)執(zhí)行發(fā)送操作之后,還包括:判斷子job是否對待處理消息執(zhí)行完發(fā)送操作;若是,則計算已執(zhí)行完發(fā)送操作的子job數(shù)量;根據(jù)已執(zhí)行完發(fā)送操作的子job數(shù)量再生成數(shù)量相等的子job;利用主job對新生成的子job分配待處理消息,以使得新生成的子job對分配到的待處理消息并發(fā)執(zhí)行發(fā)送操作。
本實施例中,服務(wù)器對子job都設(shè)置了執(zhí)行任務(wù)的開始時間和時間間隔。待處理消息也可以稱為子job的任務(wù)。子job執(zhí)行任務(wù)也就是子job對待處理消息執(zhí)行發(fā)送操作。子job在接收到任務(wù)組時開始對任務(wù)組內(nèi)的待處理消息執(zhí)行發(fā)送操作的時刻,視為子job執(zhí)行任務(wù)的開始時間。子job執(zhí)行完任務(wù)組內(nèi)的所有待處理消息所耗費的時間稱為子job執(zhí)行任務(wù)的時間間隔。任務(wù)組內(nèi)所有的待處理消息被發(fā)送之后,子job即被釋放。
由于每個子job執(zhí)行任務(wù)的開始時間可能會不同,導(dǎo)致每個子job執(zhí)行完任務(wù)組內(nèi)的所有待處理消息的時間可能不同。或者由于待處理消息對應(yīng)的業(yè)務(wù)類型不同,使得每個子job執(zhí)行任務(wù)的時間間隔不同,也可能會導(dǎo)致每個子job執(zhí)行完任務(wù)組內(nèi)的所有待處理消息的時間不同。
每個子job都具有對應(yīng)的日志,日志中記錄了子job執(zhí)行任務(wù)的狀況。在主job對子job分配待處理消息的預(yù)設(shè)時間之后,服務(wù)器判斷子job對分配到的待處理消息是否已發(fā)送完。具體的,在主job對子job分配待處理消息的預(yù)設(shè)時間之后,服務(wù)器利用主job查看每個子job對應(yīng)的日志,根據(jù)日志記錄來判斷子job對待處理消息執(zhí)行發(fā)送操作的狀況。由于數(shù)據(jù)庫的處理能力是有一定限度的,為了確保數(shù)據(jù)庫的平穩(wěn)運行,因此在數(shù)據(jù)庫內(nèi)同時運行的子job的數(shù)量是一定的。子job對任務(wù)組內(nèi)所有的待處理消息執(zhí)行完發(fā)送操作后會被釋放。利用主job查詢數(shù)據(jù)庫中待處理信息的數(shù)量,根據(jù)子job的任務(wù)量閾值計算所需子job總量。在主job對子job分配待處理消息的預(yù)設(shè)時間之后,計算完成發(fā)送操作的子job數(shù)量。根據(jù)已執(zhí)行完發(fā)送操作的子job數(shù)量生成數(shù)量相對的子job。由此使得數(shù)據(jù)庫內(nèi)運行的子job的總數(shù)量保持不變,從而維持數(shù)據(jù)庫的平穩(wěn)運行。對于新生成的子job,服務(wù)器利用主job為新生成的子job分配待處理消息。具體的,可以采用上述實施例中提供的方式通過主job可以逐一為新生成的子job分配待處理消息,也可以集中為新生成的子job分配待處理消息,新生成的子job對待處理消息并發(fā)執(zhí)行發(fā)送操作。重復(fù)執(zhí)行,直至在數(shù)據(jù)庫中生成的子job的數(shù)量與計算出的所需子job總量相等,所有的待處理消息被發(fā)送完畢。
在一個實施例中,利用多個子job對分配到的待處理消息并發(fā)執(zhí)行發(fā)送操作包括:利用主job將待處理消息對應(yīng)的客戶標(biāo)識和消息模板標(biāo)識發(fā)送至子job;子job根據(jù)消息模板標(biāo)識獲取對應(yīng)的消息模板,并對消息模板進行拼裝;利用子job將拼裝后的消息模板根據(jù)客戶標(biāo)識發(fā)送至客戶終端。
本實施例中,多個子job對分配到的待處理消息并發(fā)執(zhí)行發(fā)送操作。每個子job對分配到的待處理消息單獨進行發(fā)送操作,子job之間互不影響。具體的,每個子job對待處理消息執(zhí)行發(fā)送操作的過程包括:利用主job將待處理 消息對應(yīng)的客戶標(biāo)識和消息模板標(biāo)識發(fā)送至子job。不同的待處理消息根據(jù)其對應(yīng)的業(yè)務(wù)類型可以采用不同的消息模板。服務(wù)器利用主job根據(jù)待處理消息對應(yīng)的業(yè)務(wù)類型獲取對應(yīng)的客戶標(biāo)識和消息模板。例如,待處理消息為與保單相關(guān)的短信,則服務(wù)器可以利用主job根據(jù)保單信息來獲取待處理消息對應(yīng)的客戶標(biāo)識和消息模板。主job將待處理消息對應(yīng)的客戶標(biāo)識和消息模板標(biāo)識發(fā)送至子job,子job根據(jù)消息模板標(biāo)識獲取對應(yīng)的消息模板,根據(jù)客戶標(biāo)識獲取對應(yīng)的客戶信息,根據(jù)客戶信息對消息模板中的變量進行替換,由此完成對消息模板的拼裝。子job將拼裝后的消息模板根據(jù)客戶標(biāo)識發(fā)送至客戶終端。通過多個子job對待處理消息并發(fā)執(zhí)行發(fā)送操作,從而有效提高了消息發(fā)送效率,避免了海量消息的積壓。
在一個實施例中,在獲取子job任務(wù)量閾值之前,還包括:獲取子job的數(shù)量;多次獲取所有子job在預(yù)設(shè)時間內(nèi)發(fā)送消息的總數(shù)量,將最高的總數(shù)量確定為所有子job的任務(wù)總量閾值;根據(jù)所有子job的任務(wù)總量閾值與子job的數(shù)量計算子job的任務(wù)量閾值。
本實施例中,為了讓每個子job發(fā)送更多的待處理消息,需要確定子job發(fā)送待處理消息的任務(wù)量閾值。具體的,服務(wù)器可以分別多次獲取所有子job在預(yù)設(shè)時間內(nèi)發(fā)送消息的總數(shù)量,將其中最高的總數(shù)量確定為所有子job的任務(wù)總量閾值。服務(wù)器根據(jù)所有子job的任務(wù)量總閾值與子job的數(shù)量計算每個子job的任務(wù)量均值,將子job的任務(wù)量均值作為子job的任務(wù)量閾值。由于所有子job的任務(wù)總量閾值是所有子job在預(yù)設(shè)時間內(nèi)發(fā)送的總數(shù)量最高的,由此確保了每個子job的任務(wù)量閾值也是最高的。從而能夠使得每個子job盡可能發(fā)送更多的待處理消息。
還可以根據(jù)業(yè)務(wù)類型分別計算每個子job對應(yīng)的任務(wù)量閾值。由此,可以在子job處理不同業(yè)務(wù)類型對應(yīng)的待處理消息時,能夠采用不同的任務(wù)量閾值。有效提高海量消息的積壓,提高消息發(fā)送效率。
在一個實施例中,如圖2所示,提供了一種服務(wù)器,包括通過系統(tǒng)總線連接的處理器、內(nèi)存儲器、非易失性存儲介質(zhì)和網(wǎng)絡(luò)接口。其中,該服務(wù)器的非 易失性存儲介質(zhì)中存儲有操作系統(tǒng)和海量消息的處理裝置,海量消息的處理裝置用于有效緩解海量消息積壓,提高消息發(fā)送效率。服務(wù)器的處理器用于提供計算和控制能力,被配置為執(zhí)行一種海量消息的處理方法。服務(wù)器可以是獨立服務(wù)器,也可以是集群服務(wù)器。
在一個實施例中,如圖3所示,提供了一種海量消息的處理裝置,包括:生成模塊302、分配模塊304和發(fā)送模塊306,其中:
生成模塊302,用于生成job,job包括一個主job和多個子job。
分配模塊304,用于利用主job抓取待處理消息,對待處理消息進行分組,將分組后的待處理消息分配至多個子job。
發(fā)送模塊306,用于利用多個子job對分配到的待處理消息并發(fā)執(zhí)行發(fā)送操作。
在一個實施例中,分配模塊304還用于獲取子job任務(wù)量閾值;利用主job根據(jù)子job任務(wù)量閾值抓取子job對應(yīng)的待處理消息;將抓取到的待處理消息設(shè)置為一個任務(wù)組,并為任務(wù)組添加對應(yīng)的標(biāo)簽;將添加標(biāo)簽后的任務(wù)組分配至子job;重復(fù)執(zhí)行利用主job根據(jù)子job任務(wù)量閾值抓取子job對應(yīng)的待處理消息,直至為每個子job分配相應(yīng)的任務(wù)組。
在一個實施例中,分配模塊304還用于利用主job抓取多個待處理消息;獲取子job任務(wù)量閾值;根據(jù)子job任務(wù)量閾值對抓取到的待處理消息進行分組,得到多個任務(wù)組;對多個任務(wù)組分別添加對應(yīng)的標(biāo)簽,將添加標(biāo)簽后的任務(wù)組分配至多個子job。
在一個實施例中,如圖4所示,該裝置還包括:判斷模塊308和計算模塊310,其中:
判斷模塊308,用于判斷子job是否對待處理消息執(zhí)行完發(fā)送操作。
計算模塊310,用于若子job對待處理消息執(zhí)行完發(fā)送操作,則計算已執(zhí)行完發(fā)送操作的子job數(shù)量。
生成模塊302還用于根據(jù)已執(zhí)行完發(fā)送操作的子job數(shù)量再生成數(shù)量相等的子job;分配模塊304還用于利用主job對新生成的子job分配待處理消息; 發(fā)送模塊306還用于新生成的子job對分配到的待處理消息并發(fā)執(zhí)行發(fā)送操作。
在一個實施例中,發(fā)送模塊308還用于利用主job將待處理消息對應(yīng)的客戶標(biāo)識和消息模板標(biāo)識發(fā)送至子job;子job根據(jù)消息模板標(biāo)識獲取對應(yīng)的消息模板,并對消息模板進行拼裝;利用子job將拼裝后的消息模板根據(jù)客戶標(biāo)識發(fā)送至客戶終端。
在一個實施例中,計算模塊310還用于獲取子job的數(shù)量;多次獲取所有子job在預(yù)設(shè)時間內(nèi)發(fā)送消息的總數(shù)量,將最高的總數(shù)量確定為所有子job的任務(wù)總量閾值;根據(jù)所有子job的任務(wù)總量閾值與子job的數(shù)量計算子job的任務(wù)量閾值。
以上實施例的各技術(shù)特征可以進行任意的組合,為使描述簡潔,未對上述實施例中的各個技術(shù)特征所有可能的組合都進行描述,然而,只要這些技術(shù)特征的組合不存在矛盾,都應(yīng)當(dāng)認為是本說明書記載的范圍。
以上實施例僅表達了本發(fā)明的幾種實施方式,其描述較為具體和詳細,但并不能因此而理解為對發(fā)明專利范圍的限制。應(yīng)當(dāng)指出的是,對于本領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進,這些都屬于本發(fā)明的保護范圍。因此,本發(fā)明專利的保護范圍應(yīng)以所附權(quán)利要求為準。