專利名稱:一種消息發(fā)送系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種消息發(fā)送系統(tǒng)。
背景技術(shù):
在使用計(jì)算機(jī)進(jìn)行信息處理的各種領(lǐng)域中,常常需要在異構(gòu)的系統(tǒng)之間進(jìn)行消息的發(fā)送,例如A系統(tǒng)向B系統(tǒng)發(fā)送訂單消息,C系統(tǒng)向D系統(tǒng)發(fā)送用戶登錄消息等。在實(shí)際的計(jì)算機(jī)系統(tǒng)的運(yùn)行中,常常因?yàn)榫W(wǎng)絡(luò)擁擠或設(shè)備自身等原因造成消息發(fā)送延遲或失敗,也就是說(shuō)消息的傳輸可靠性不夠。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明提供一種消息發(fā)送系統(tǒng),能夠提高在計(jì)算機(jī)網(wǎng)絡(luò)中傳輸消息的
可靠性。為實(shí)現(xiàn)上述目的,本發(fā)明提供了 一種消息發(fā)送系統(tǒng)。本發(fā)明的消息發(fā)送系統(tǒng),用于將第一系統(tǒng)的消息發(fā)送給第二系統(tǒng),所述消息發(fā)送系統(tǒng)包括:數(shù)據(jù)庫(kù)模塊,用于在數(shù)據(jù)庫(kù)中保存所述消息以及所述消息的發(fā)送狀態(tài);消息處理模塊,用于以數(shù)據(jù)庫(kù)事務(wù)的方式將所述數(shù)據(jù)庫(kù)模塊中的所述消息發(fā)送給所述第二系統(tǒng),并且將消息的發(fā)送狀態(tài)返回給所述數(shù)據(jù)庫(kù)模塊??蛇x地,所述數(shù)據(jù)庫(kù)模塊包括:待發(fā)送單元,用于保存待發(fā)送的消息;成功發(fā)送單元,用于保存發(fā)送成功的消息;失敗發(fā)送單元,用于保存發(fā)送失敗的消息。可選地,所述消息處理模塊包括:獲取子模塊,用于從所述數(shù)據(jù)庫(kù)模塊中獲取待發(fā)送的消息并且按預(yù)設(shè)的消息類型分為多個(gè)消息隊(duì)列,發(fā)送子模塊,用于將所述消息隊(duì)列中的消息向所述第二系統(tǒng)發(fā)送,并根據(jù)所述第二系統(tǒng)返回的表示消息是否發(fā)送成功的信息,將發(fā)送成功的消息轉(zhuǎn)發(fā)給所述成功發(fā)送單元,將發(fā)送失敗的消息轉(zhuǎn)發(fā)給所述失敗發(fā)送單元,掃描子模塊,用于從所述數(shù)據(jù)庫(kù)模塊中獲取發(fā)送失敗的消息然后放入所述獲取子模塊中;并且所述待發(fā)送單元還用于刪除所述發(fā)送子模塊發(fā)送過(guò)的消息。可選地,掃描子模塊還用于按預(yù)設(shè)的時(shí)間間隔從所述數(shù)據(jù)庫(kù)模塊中獲取發(fā)送失敗的消息??蛇x地,所述獲取子模塊包括:消息讀取單元,用于從所述待發(fā)送單元中讀取消息并且按預(yù)設(shè)的消息類型對(duì)讀取的消息進(jìn)行分類;隊(duì)列管理單元,用于將所述消息讀取單元分類得到的多組消息各自形成消息隊(duì)列。可選地,所述消息讀取單元還用于按預(yù)設(shè)的時(shí)間間隔從所述待發(fā)送單元中讀取消
肩、O可選地,所述隊(duì)列管理單元還用于根據(jù)預(yù)設(shè)方式控制所述消息隊(duì)列的長(zhǎng)度??蛇x地,所述發(fā)送子模塊還用于以先入先出的方式向所述第二系統(tǒng)發(fā)送消息。可選地,所述失敗發(fā)送單元還用于記錄各條消息發(fā)送失敗的次數(shù);所述掃描子模塊還用于在發(fā)送失敗的消息的被發(fā)送次數(shù)小于預(yù)設(shè)值,并且當(dāng)前時(shí)間已達(dá)到為該消息設(shè)定的下次發(fā)送時(shí)間的情況下,從所述數(shù)據(jù)庫(kù)模塊中獲取該發(fā)送失敗的消息??蛇x地,所述掃描子模塊還用于在發(fā)送失敗的消息的被發(fā)送次數(shù)達(dá)到預(yù)設(shè)值,并且當(dāng)前時(shí)間未達(dá)到為該消息設(shè)定的下次發(fā)送時(shí)間之前的情況下,輸出提示信息。根據(jù)本發(fā)明的技術(shù)方案,使系統(tǒng)的待發(fā)消息保存到數(shù)據(jù)庫(kù)中并由數(shù)據(jù)庫(kù)事務(wù)來(lái)保證對(duì)待發(fā)消息操作的ACID特性即原子性、一致性、持久性,也就是說(shuō)將網(wǎng)絡(luò)消息發(fā)送操作轉(zhuǎn)化成了一個(gè)對(duì)數(shù)據(jù)庫(kù)的ACID操作,從而有助于提高消息發(fā)送的可靠性。同時(shí)消息發(fā)送類型、隊(duì)列大小、輪詢時(shí)間都可以通過(guò)配置文件配置,在有效的提高消息發(fā)送的可靠性的同時(shí)能夠滿足各種業(yè)務(wù)場(chǎng)景的性能需要。
附圖用于更好地理解本發(fā)明,不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。其中:圖1A是根據(jù)本發(fā)明實(shí)施例的消息發(fā)送系統(tǒng)的基本結(jié)構(gòu)的示意圖;圖1B是根據(jù)本發(fā)明實(shí)施例的消息發(fā)送系統(tǒng)的一種優(yōu)選結(jié)構(gòu)的示意圖;圖2是根據(jù)本發(fā)明實(shí)施例的消息發(fā)送系統(tǒng)基本流程的示意圖;圖3是根據(jù)本發(fā)明實(shí)施例的發(fā)送失敗消息處理的一種可選流程的示意圖。
具體實(shí)施例方式以下結(jié)合附圖對(duì)本發(fā)明的示范性實(shí)施例做出說(shuō)明,其中包括本發(fā)明實(shí)施例的各種細(xì)節(jié)以助于理解,應(yīng)當(dāng)將它們認(rèn)為僅僅是示范性的。因此,本領(lǐng)域普通技術(shù)人員應(yīng)當(dāng)認(rèn)識(shí)至IJ,可以對(duì)這里描述的實(shí)施例做出各種改變和修改,而不會(huì)背離本發(fā)明的范圍和精神。同樣,為了清楚和簡(jiǎn)明,以下的描述中省略了對(duì)公知功能和結(jié)構(gòu)的描述。圖1A是根據(jù)本發(fā)明實(shí)施例的消息發(fā)送系統(tǒng)的基本結(jié)構(gòu)的示意圖。如圖1A所示,消息發(fā)送系統(tǒng)10與系統(tǒng)A以及系統(tǒng)B連接,用來(lái)將系統(tǒng)A中的消息發(fā)送到系統(tǒng)B中。消息發(fā)送系統(tǒng)10中包括數(shù)據(jù)庫(kù)模塊11和消息處理模塊12。數(shù)據(jù)庫(kù)模塊11用于在數(shù)據(jù)庫(kù)中保存消息以及消息的發(fā)送狀態(tài);消息處理模塊12用于以數(shù)據(jù)庫(kù)事務(wù)的方式將數(shù)據(jù)庫(kù)模塊中的消息發(fā)送給系統(tǒng)B,并且將消息的發(fā)送狀態(tài)返回給數(shù)據(jù)庫(kù)模塊。采用圖1所示的消息發(fā)送系統(tǒng),能夠使系統(tǒng)A的待發(fā)消息保存到數(shù)據(jù)庫(kù)中并由數(shù)據(jù)庫(kù)事務(wù)來(lái)保證對(duì)待發(fā)消息操作的ACID特性即原子性、一致性、持久性,也就是說(shuō)將網(wǎng)絡(luò)消息發(fā)送操作轉(zhuǎn)化成了一個(gè)對(duì)數(shù)據(jù)庫(kù)的ACID操作,從而有助于提高消息發(fā)送的可靠性。以下結(jié)合圖1B對(duì)本發(fā)明實(shí)施例的優(yōu)選方式做出說(shuō)明。圖1B是根據(jù)本發(fā)明實(shí)施例的消息發(fā)送系統(tǒng)的一種優(yōu)選結(jié)構(gòu)的示意圖。如圖1B所示,數(shù)據(jù)庫(kù)模塊11包括待發(fā)送單元111、成功發(fā)送單元112、失敗發(fā)送單元113。待發(fā)送單元111用于保存待發(fā)送的消息;成功發(fā)送單元112用于保存發(fā)送成功的消息;失敗發(fā)送單元113用于保存發(fā)送失敗的消息。消息處理模塊12包括:獲取子模塊121、發(fā)送子模塊122、掃描子模塊123。獲取子模塊121用于從數(shù)據(jù)庫(kù)模塊11中獲取待發(fā)送的消息并且按預(yù)設(shè)的消息類型分為多個(gè)消息隊(duì)列。發(fā)送子模塊122用于將消息隊(duì)列中的消息向系統(tǒng)B發(fā)送,并根據(jù)系統(tǒng)B返回的表示消息是否發(fā)送成功的信息,將發(fā)送成功的消息轉(zhuǎn)發(fā)給成功發(fā)送單元112,將發(fā)送失敗的消息轉(zhuǎn)發(fā)給失敗發(fā)送單元113。掃描子模塊123用于從數(shù)據(jù)庫(kù)模塊11中獲取發(fā)送失敗的消息然后放入獲取子模塊121中,可按預(yù)設(shè)的時(shí)間間隔來(lái)輪詢獲取。數(shù)據(jù)庫(kù)模塊11中的待發(fā)送單元111還可用于刪除發(fā)送子模塊122發(fā)送過(guò)的消息。圖1B同時(shí)示出了獲取子模塊121的一種可選結(jié)構(gòu),其包括消息讀取單元1211和隊(duì)列管理單元1212。消息讀取單元1211用于從待發(fā)送單元112中讀取消息并且按預(yù)設(shè)的消息類型對(duì)讀取的消息進(jìn)行分類,可按預(yù)設(shè)的時(shí)間間隔進(jìn)行輪詢讀??;隊(duì)列管理單元1212用于將消息讀取單元1211分類得到的多組消息各自形成消息隊(duì)列。圖中示出了 3個(gè)隊(duì)列的情形。在實(shí)際中可以根據(jù)預(yù)設(shè)方式控制消息隊(duì)列的長(zhǎng)度以保證系統(tǒng)的穩(wěn)定性,例如可以根據(jù)計(jì)算機(jī)的內(nèi)存大小來(lái)調(diào)整隊(duì)列長(zhǎng)度。發(fā)送子模塊122在發(fā)送消息時(shí)可以根據(jù)消息隊(duì)列來(lái)相應(yīng)地組成線程池,可以采用先入先出的方式來(lái)管理發(fā)送時(shí)序。失敗發(fā)送單元113還可以用于記錄各條消息發(fā)送失敗的次數(shù),該次數(shù)根據(jù)發(fā)送子模塊122提供的發(fā)送失敗信息來(lái)得出,每當(dāng)收到發(fā)送子模塊122提供的發(fā)送失敗信息時(shí),失敗發(fā)送單元123將發(fā)送失敗的信息的發(fā)送失敗的次數(shù)加I?;蛘呖梢杂砂l(fā)送子模塊122來(lái)統(tǒng)計(jì)各條信息發(fā)送失敗的次數(shù)然后將該次數(shù)提供給失敗發(fā)送單元113。掃描子模塊123還可用于在發(fā)送失敗的消息的被發(fā)送次數(shù)小于預(yù)設(shè)值,并且當(dāng)前時(shí)間已達(dá)到為該消息設(shè)定的下次發(fā)送時(shí)間的情況下,從數(shù)據(jù)庫(kù)模塊11中獲取該發(fā)送失敗的消息。掃描子模塊123也可用于在發(fā)送失敗的消息的被發(fā)送次數(shù)達(dá)到預(yù)設(shè)值,并且當(dāng)前時(shí)間未達(dá)到為該消息設(shè)定的下次發(fā)送時(shí)間之前的情況下,輸出提示信息,這樣系統(tǒng)管理員可以進(jìn)行后續(xù)的處理。以下結(jié)合圖2和圖3對(duì)本發(fā)明實(shí)施例的消息發(fā)送系統(tǒng)的運(yùn)行過(guò)程做出說(shuō)明。圖2是根據(jù)本發(fā)明實(shí)施例的消息發(fā)送系統(tǒng)基本流程的示意圖。圖3是根據(jù)本發(fā)明實(shí)施例的發(fā)送失敗消息處理的一種可選流程的示意圖。在本實(shí)施例的消息發(fā)送系統(tǒng)進(jìn)行消息發(fā)送時(shí),首先從系統(tǒng)A中獲取要發(fā)送的消息,以數(shù)據(jù)庫(kù)11的規(guī)定格式進(jìn)行保存。然后由獲取子模塊121掃描待發(fā)送單元(步驟S21),然后形成消息隊(duì)列(步驟S22),再交由發(fā)送子模塊122進(jìn)行消息發(fā)送(步驟S23),然后根據(jù)系統(tǒng)B反饋的發(fā)送是否成功的信息判斷發(fā)送是否成功(步驟S24),若是,則從待發(fā)送單元中刪除已發(fā)送的消息(步驟S25),并進(jìn)行消息轉(zhuǎn)發(fā)(步驟S26),將消息轉(zhuǎn)發(fā)給成功發(fā)送單元111 ;否則判斷是否需要重新發(fā)送(步驟S27)。在需要重新發(fā)送的情況下轉(zhuǎn)入發(fā)送失敗消息處理的流程(步驟S28),否則轉(zhuǎn)入步驟S25。在本發(fā)明實(shí)施例的發(fā)送失敗消息處理的流程中,如圖3所示,首先將發(fā)送失敗次數(shù)加I (步驟S31),然后將發(fā)送失敗的消息保存到失敗發(fā)送單元113中(步驟S32),再由掃描子模塊123掃描失敗發(fā)送單元113 (步驟S33),接下來(lái)判斷是否達(dá)到預(yù)設(shè)的重發(fā)次數(shù)(步驟S34),若是,則輸出提示信息(步驟S35),否則轉(zhuǎn)入步驟S22,此時(shí)將掃描子模塊123獲取的發(fā)送失敗的消息重新放入消息隊(duì)列中。根據(jù)本發(fā)明實(shí)施例的技術(shù)方案,使系統(tǒng)的待發(fā)消息保存到數(shù)據(jù)庫(kù)中并由數(shù)據(jù)庫(kù)事務(wù)來(lái)保證對(duì)待發(fā)消息操作的ACID特性即原子性、一致性、持久性,也就是說(shuō)將網(wǎng)絡(luò)消息發(fā)送操作轉(zhuǎn)化成了一個(gè)對(duì)數(shù)據(jù)庫(kù)的ACID操作,從而有助于提高消息發(fā)送的可靠性。同時(shí)消息發(fā)送類型、隊(duì)列大小、輪詢時(shí)間都可以通過(guò)配置文件配置,在有效的提高消息發(fā)送的可靠性的同時(shí)能夠滿足各種業(yè)務(wù)場(chǎng)景的性能需要。以上結(jié)合具體實(shí)施例描述了本發(fā)明的基本原理,但是,需要指出的是,對(duì)本領(lǐng)域的普通技術(shù)人員而言,能夠理解本發(fā)明的方法和設(shè)備的全部或者任何步驟或者部件,可以在任何計(jì)算裝置(包括處理器、存儲(chǔ)介質(zhì)等)或者計(jì)算裝置的網(wǎng)絡(luò)中,以硬件、固件、軟件或者它們的組合加以實(shí)現(xiàn),這是本領(lǐng)域普通技術(shù)人員在閱讀了本發(fā)明的說(shuō)明的情況下運(yùn)用他們的基本編程技能就能實(shí)現(xiàn)的。因此,本發(fā)明的目的還可以通過(guò)在任何計(jì)算裝置上運(yùn)行一個(gè)程序或者一組程序來(lái)實(shí)現(xiàn)。所述計(jì)算裝置可以是公知的通用裝置。因此,本發(fā)明的目的也可以僅僅通過(guò)提供包含實(shí)現(xiàn)所述方法或者裝置的程序代碼的程序產(chǎn)品來(lái)實(shí)現(xiàn)。也就是說(shuō),這樣的程序產(chǎn)品也構(gòu)成本發(fā)明,并且存儲(chǔ)有這樣的程序產(chǎn)品的存儲(chǔ)介質(zhì)也構(gòu)成本發(fā)明。顯然,所述存儲(chǔ)介質(zhì)可以是任何公知的存儲(chǔ)介質(zhì)或者將來(lái)開(kāi)發(fā)出的任何存儲(chǔ)介質(zhì)。還需要指出的是,在本發(fā)明的裝置和方法中,顯然,各部件或各步驟是可以分解和/或重新組合的。這些分解和/或重新組合應(yīng)視為本發(fā)明的等效方案。并且,執(zhí)行上述系列處理的步驟可以自然地按照說(shuō)明的順序按時(shí)間順序執(zhí)行,但是并不需要一定按照時(shí)間順序執(zhí)行。某些步驟可以并行或彼此獨(dú)立地執(zhí)行。上述具體實(shí)施方式
,并不構(gòu)成對(duì)本發(fā)明保護(hù)范圍的限制。本領(lǐng)域技術(shù)人員應(yīng)該明白的是,取決于設(shè)計(jì)要求和其他因素,可以發(fā)生各種各樣的修改、組合、子組合和替代。任何在本發(fā)明的精神和原則之內(nèi)所作的修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種消息發(fā)送系統(tǒng),用于將第一系統(tǒng)的消息發(fā)送給第二系統(tǒng),其特征在于,所述消息發(fā)送系統(tǒng)包括: 數(shù)據(jù)庫(kù)模塊,用于在數(shù)據(jù)庫(kù)中保存所述消息以及所述消息的發(fā)送狀態(tài); 消息處理模塊,用于以數(shù)據(jù)庫(kù)事務(wù)的方式將所述數(shù)據(jù)庫(kù)模塊中的所述消息發(fā)送給所述第二系統(tǒng),并且將消息的發(fā)送狀態(tài)返回給所述數(shù)據(jù)庫(kù)模塊。
2.根據(jù)權(quán)利要求1所述的消息發(fā)送系統(tǒng),其特征在于,所述數(shù)據(jù)庫(kù)模塊包括: 待發(fā)送單元,用于保存待發(fā)送的消息; 成功發(fā)送單元,用于保存發(fā)送成功的消息; 失敗發(fā)送單元,用于保存發(fā)送失敗的消息。
3.根據(jù)權(quán)利要求2所述的消息發(fā)送系統(tǒng),其特征在于, 所述消息處理模塊包括: 獲取子模塊,用于從所述數(shù)據(jù)庫(kù)模塊中獲取待發(fā)送的消息并且按預(yù)設(shè)的消息類型分為多個(gè)消息隊(duì)列, 發(fā)送子模塊,用于將所述消息隊(duì)列中的消息向所述第二系統(tǒng)發(fā)送,并根據(jù)所述第二系統(tǒng)返回的表示消息是否發(fā)送成功的信息,將發(fā)送成功的消息轉(zhuǎn)發(fā)給所述成功發(fā)送單元,將發(fā)送失敗的消息轉(zhuǎn)發(fā)給所述失敗發(fā)送單元, 掃描子模塊,用于從所述數(shù)據(jù)庫(kù)模塊中獲取發(fā)送失敗的消息然后放入所述獲取子模塊中; 并且所述待發(fā)送單元還用于刪除所述發(fā)送子模塊發(fā)送過(guò)的消息。
4.根據(jù)權(quán)利要求3所述的消息發(fā)送系統(tǒng),其特征在于,掃描子模塊還用于按預(yù)設(shè)的時(shí)間間隔從所述數(shù)據(jù)庫(kù)模塊中獲取發(fā)送失敗的消息。
5.根據(jù)權(quán)利要求3所述的消息發(fā)送系統(tǒng),其特征在于,所述獲取子模塊包括: 消息讀取單元,用于從所述待發(fā)送單元中讀取消息并且按預(yù)設(shè)的消息類型對(duì)讀取的消息進(jìn)行分類; 隊(duì)列管理單元,用于將所述消息讀取單元分類得到的多組消息各自形成消息隊(duì)列。
6.根據(jù)權(quán)利要求5所述的消息發(fā)送系統(tǒng),其特征在于,所述消息讀取單元還用于按預(yù)設(shè)的時(shí)間間隔從所述待發(fā)送單元中讀取消息。
7.根據(jù)權(quán)利要求5所述的消息發(fā)送系統(tǒng),其特征在于,所述隊(duì)列管理單元還用于根據(jù)預(yù)設(shè)方式控制所述消息隊(duì)列的長(zhǎng)度。
8.根據(jù)權(quán)利要求3至7中任一項(xiàng)所述的消息發(fā)送系統(tǒng),其特征在于,所述發(fā)送子模塊還用于以先入先出的方式向所述第二系統(tǒng)發(fā)送消息。
9.根據(jù)權(quán)利要求3至7中任一項(xiàng)所述的消息發(fā)送系統(tǒng),其特征在于, 所述失敗發(fā)送單元還用于記錄各條消息發(fā)送失敗的次數(shù); 所述掃描子模塊還用于在發(fā)送失敗的消息的被發(fā)送次數(shù)小于預(yù)設(shè)值,并且當(dāng)前時(shí)間已達(dá)到為該消息設(shè)定的下次發(fā)送時(shí)間的情況下,從所述數(shù)據(jù)庫(kù)模塊中獲取該發(fā)送失敗的消肩、O
10.根據(jù)權(quán)利要求9所述的消息發(fā)送系統(tǒng),其特征在于, 所述掃描子模塊還用于在發(fā)送失敗的消息的被發(fā)送次數(shù)達(dá)到預(yù)設(shè)值,并且當(dāng)前時(shí)間未達(dá)到為該消息設(shè)定的下次發(fā)送時(shí)間之前的情況下,輸出提示信息。
全文摘要
本發(fā)明提供一種消息發(fā)送系統(tǒng),能夠提高在計(jì)算機(jī)網(wǎng)絡(luò)中傳輸消息的可靠性。本發(fā)明的消息發(fā)送系統(tǒng)用于將第一系統(tǒng)的消息發(fā)送給第二系統(tǒng),包括數(shù)據(jù)庫(kù)模塊,用于在數(shù)據(jù)庫(kù)中保存所述消息以及所述消息的發(fā)送狀態(tài);消息處理模塊,用于以數(shù)據(jù)庫(kù)事務(wù)的方式將所述數(shù)據(jù)庫(kù)模塊中的所述消息發(fā)送給所述第二系統(tǒng),并且將消息的發(fā)送狀態(tài)返回給所述數(shù)據(jù)庫(kù)模塊。
文檔編號(hào)G06F17/30GK103209115SQ20131011719
公開(kāi)日2013年7月17日 申請(qǐng)日期2013年4月7日 優(yōu)先權(quán)日2013年4月7日
發(fā)明者鄧必國(guó) 申請(qǐng)人:北京京東世紀(jì)貿(mào)易有限公司