事務(wù)消息的發(fā)送方法和裝置的制造方法
【專利摘要】本發(fā)明提出一種事務(wù)消息的發(fā)送方法和裝置,上述事務(wù)消息的發(fā)送方法包括:接收消息中心發(fā)送的事務(wù)回查請(qǐng)求,所述事務(wù)回查請(qǐng)求中攜帶消息標(biāo)識(shí),用于請(qǐng)求查詢所述消息標(biāo)識(shí)對(duì)應(yīng)的本地事務(wù)的提交狀態(tài);查詢數(shù)據(jù)庫中是否存在所述消息標(biāo)識(shí)對(duì)應(yīng)的事務(wù)回查記錄;如果存在,則通知所述消息中心投遞攜帶所述消息標(biāo)識(shí)的消息。本發(fā)明通過增加事務(wù)回查記錄的數(shù)據(jù)結(jié)構(gòu),將復(fù)雜的邏輯判斷改為對(duì)事務(wù)回查記錄的存在性判斷,從而大大降低了事務(wù)提交狀態(tài)的判斷復(fù)雜度。
【專利說明】
事務(wù)消息的發(fā)送方法和裝置
技術(shù)領(lǐng)域
[0001] 本發(fā)明設(shè)及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,尤其設(shè)及一種事務(wù)消息的發(fā)送方法和裝置。
【背景技術(shù)】
[0002] 事務(wù)是并發(fā)控制的單位,是用戶定義的一個(gè)操作序列,具體來說,事務(wù)就是訪問數(shù) 據(jù)庫時(shí)一系列的邏輯相關(guān)動(dòng)作。比如列車訂票系統(tǒng)中選擇目的地(或車次)、選擇日期和時(shí) 間、選擇座位(或上下鋪)、出票(總票數(shù)減一張)和付費(fèi),運(yùn)一系列的業(yè)務(wù)處理構(gòu)成一個(gè)事 務(wù)。
[0003] 事務(wù)中的業(yè)務(wù)處理要么都執(zhí)行,要么都不執(zhí)行,是一個(gè)不可分割的工作單位。通過 事務(wù),服務(wù)器可W將邏輯相關(guān)的一組業(yè)務(wù)綁定在一起,W便服務(wù)器保持?jǐn)?shù)據(jù)的完整性。
[0004] 需要發(fā)送帶事務(wù)的消息時(shí),應(yīng)用系統(tǒng)會(huì)在業(yè)務(wù)處理的過程中向消息中屯、投遞一個(gè) 消息,但是運(yùn)時(shí)消息中屯、不會(huì)立即將消息投遞出去,在本地事務(wù)提交后,應(yīng)用系統(tǒng)會(huì)向消息 中屯、發(fā)送事務(wù)提交信息,W通知消息中屯、可W將消息投遞出去,運(yùn)時(shí)消息中屯、才會(huì)將消息 投遞出去。 陽〇化]但是應(yīng)用系統(tǒng)向消息中屯、發(fā)送事務(wù)提交信息運(yùn)一步驟可能由于網(wǎng)絡(luò)調(diào)用超時(shí)或 者其他原因斷掉,導(dǎo)致消息中屯、無法確認(rèn)消息是需要投遞,還是刪除,所W消息中屯、會(huì)發(fā)起 事務(wù)回查,W確保應(yīng)用系統(tǒng)的本地事務(wù)的提交狀態(tài)與消息的投遞狀態(tài)一致。
[0006] 現(xiàn)有技術(shù)中,事務(wù)提交狀態(tài)的判斷是根據(jù)業(yè)務(wù)數(shù)據(jù)的狀態(tài)來進(jìn)行的,但是由于事 務(wù)中各業(yè)務(wù)對(duì)數(shù)據(jù)的更改,所W業(yè)務(wù)數(shù)據(jù)的狀態(tài)的判斷是非常復(fù)雜的,執(zhí)行難度較大。
【發(fā)明內(nèi)容】
[0007] 本發(fā)明的目的旨在至少在一定程度上解決相關(guān)技術(shù)中的技術(shù)問題之一。
[0008] 為此,本發(fā)明的第一個(gè)目的在于提出一種事務(wù)消息的發(fā)送方法。該方法通過增加 事務(wù)回查記錄的數(shù)據(jù)結(jié)構(gòu),將復(fù)雜的邏輯判斷改為對(duì)事務(wù)回查記錄的存在性判斷,從而大 大降低了事務(wù)提交狀態(tài)的判斷復(fù)雜度。
[0009] 本發(fā)明的第二個(gè)目的在于提出一種事務(wù)消息的發(fā)送裝置。
[0010] 為了實(shí)現(xiàn)上述目的,本發(fā)明第一方面實(shí)施例的事務(wù)消息的發(fā)送方法,包括:接收消 息中屯、發(fā)送的事務(wù)回查請(qǐng)求,所述事務(wù)回查請(qǐng)求中攜帶消息標(biāo)識(shí),用于請(qǐng)求查詢所述消息 標(biāo)識(shí)對(duì)應(yīng)的本地事務(wù)的提交狀態(tài);查詢數(shù)據(jù)庫中是否存在所述消息標(biāo)識(shí)對(duì)應(yīng)的事務(wù)回查記 錄;如果存在,則通知所述消息中屯、投遞攜帶所述消息標(biāo)識(shí)的消息。
[0011] 本發(fā)明實(shí)施例的事務(wù)消息的發(fā)送方法,接收消息中屯、發(fā)送的事務(wù)回查請(qǐng)求,當(dāng)查 詢到數(shù)據(jù)庫中存在上述事務(wù)回查請(qǐng)求中攜帶的消息標(biāo)識(shí)對(duì)應(yīng)的事務(wù)回查記錄時(shí),就可W確 定上述消息標(biāo)識(shí)對(duì)應(yīng)的本地事務(wù)已提交,于是就可W通知消息中屯、投遞攜帶上述消息標(biāo)識(shí) 的消息,從而可W通過增加事務(wù)回查記錄的數(shù)據(jù)結(jié)構(gòu),將復(fù)雜的邏輯判斷改為對(duì)事務(wù)回查 記錄的存在性判斷,大大降低了事務(wù)提交狀態(tài)的判斷復(fù)雜度。
[0012] 為了實(shí)現(xiàn)上述目的,本發(fā)明第二方面實(shí)施例的事務(wù)消息的發(fā)送裝置,包括:接收模 塊,用于接收消息中屯、發(fā)送的事務(wù)回查請(qǐng)求,所述事務(wù)回查請(qǐng)求中攜帶消息標(biāo)識(shí),用于請(qǐng)求 查詢所述消息標(biāo)識(shí)對(duì)應(yīng)的本地事務(wù)的提交狀態(tài);查詢模塊,用于查詢數(shù)據(jù)庫中是否存在所 述接收模塊接收的消息標(biāo)識(shí)對(duì)應(yīng)的事務(wù)回查記錄;通知模塊,用于當(dāng)所述查詢模塊確定所 述數(shù)據(jù)庫中存在所述接收模塊接收的消息標(biāo)識(shí)對(duì)應(yīng)的事務(wù)回查記錄時(shí),通知所述消息中屯、 投遞攜帶所述消息標(biāo)識(shí)的消息。
[0013] 本發(fā)明實(shí)施例的事務(wù)消息的發(fā)送裝置,接收模塊接收消息中屯、發(fā)送的事務(wù)回查請(qǐng) 求,當(dāng)查詢模塊查詢到數(shù)據(jù)庫中存在上述事務(wù)回查請(qǐng)求中攜帶的消息標(biāo)識(shí)對(duì)應(yīng)的事務(wù)回查 記錄時(shí),就可W確定上述消息標(biāo)識(shí)對(duì)應(yīng)的本地事務(wù)已提交,于是通知模塊就可W通知消息 中屯、投遞攜帶上述消息標(biāo)識(shí)的消息,從而可W通過增加事務(wù)回查記錄的數(shù)據(jù)結(jié)構(gòu),將復(fù)雜 的邏輯判斷改為對(duì)事務(wù)回查記錄的存在性判斷,大大降低了事務(wù)提交狀態(tài)的判斷復(fù)雜度。
[0014] 本發(fā)明附加的方面和優(yōu)點(diǎn)將在下面的描述中部分給出,部分將從下面的描述中變 得明顯,或通過本發(fā)明的實(shí)踐了解到。
【附圖說明】
[0015] 本發(fā)明上述的和/或附加的方面和優(yōu)點(diǎn)從下面結(jié)合附圖對(duì)實(shí)施例的描述中將變 得明顯和容易理解,其中:
[0016] 圖1為本發(fā)明事務(wù)消息的發(fā)送方法一個(gè)實(shí)施例的流程圖;
[0017] 圖2為本發(fā)明事務(wù)消息的發(fā)送方法另一個(gè)實(shí)施例的流程圖;
[001引圖3為本發(fā)明事務(wù)消息的發(fā)送方法再一個(gè)實(shí)施例的流程圖;
[0019] 圖4為本發(fā)明事務(wù)消息的發(fā)送裝置一個(gè)實(shí)施例的結(jié)構(gòu)示意圖;
[0020] 圖5為本發(fā)明事務(wù)消息的發(fā)送裝置另一個(gè)實(shí)施例的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0021] 下面詳細(xì)描述本發(fā)明的實(shí)施例,所述實(shí)施例的示例在附圖中示出,其中自始至終 相同或類似的標(biāo)號(hào)表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考 附圖描述的實(shí)施例是示例性的,僅用于解釋本發(fā)明,而不能理解為對(duì)本發(fā)明的限制。相反, 本發(fā)明的實(shí)施例包括落入所附加權(quán)利要求書的精神和內(nèi)涵范圍內(nèi)的所有變化、修改和等同 物。
[0022] 圖1為本發(fā)明事務(wù)消息的發(fā)送方法一個(gè)實(shí)施例的流程圖,如圖1所示,該事務(wù)消息 的發(fā)送方法可W包括:
[0023] 步驟101,接收消息中屯、發(fā)送的事務(wù)回查請(qǐng)求,上述事務(wù)回查請(qǐng)求中攜帶消息標(biāo) 識(shí),用于請(qǐng)求查詢上述消息標(biāo)識(shí)對(duì)應(yīng)的本地事務(wù)的提交狀態(tài)。
[0024] 步驟102,查詢數(shù)據(jù)庫中是否存在上述消息標(biāo)識(shí)對(duì)應(yīng)的事務(wù)回查記錄。
[00巧]其中,該事務(wù)回查記錄包括消息標(biāo)識(shí)字段、該事務(wù)回查記錄的創(chuàng)建時(shí)間字段和上 述事務(wù)回查記錄的最后修改時(shí)間字段。
[00%] 本實(shí)施例中設(shè)計(jì)了??谟糜谑聞?wù)回查的數(shù)據(jù)結(jié)構(gòu),即事務(wù)回查記錄的數(shù)據(jù)結(jié)構(gòu), 可W如表1所示。 W別表1 [0028]
[OOW] 步驟103,如果存在,則通知消息中屯、投遞攜帶上述消息標(biāo)識(shí)的消息。
[0030] 本實(shí)施例中,步驟102,查詢數(shù)據(jù)庫中是否存在上述消息標(biāo)識(shí)對(duì)應(yīng)的事務(wù)回查記錄 之后,如果上述數(shù)據(jù)庫中不存在上述消息標(biāo)識(shí)對(duì)應(yīng)的事務(wù)回查記錄,則通知消息中屯、刪除 攜帶上述消息標(biāo)識(shí)的消息。
[0031] 進(jìn)一步地,接收消息中屯、發(fā)送的事務(wù)回查請(qǐng)求之前,還可W開啟本地事務(wù),在上述 本地事務(wù)中增加向數(shù)據(jù)庫中插入事務(wù)回查記錄的操作,在上述本地事務(wù)中包含的操作均執(zhí) 行完畢之后,向數(shù)據(jù)庫提交本地事務(wù)。
[0032] 進(jìn)一步地,在本地事務(wù)中增加向數(shù)據(jù)庫中插入事務(wù)回查記錄的操作之后,還可W 向消息中屯、發(fā)送本地事務(wù)對(duì)應(yīng)的消息,上述消息中攜帶上述消息標(biāo)識(shí)。
[0033] 本實(shí)施例中,上述消息所攜帶的消息標(biāo)識(shí)即為發(fā)送該消息的本地事務(wù)的事務(wù)回查 記錄中消息標(biāo)識(shí)字段的值。
[0034] 上述實(shí)施例中,接收消息中屯、發(fā)送的事務(wù)回查請(qǐng)求,當(dāng)查詢到數(shù)據(jù)庫中存在上述 事務(wù)回查請(qǐng)求中攜帶的消息標(biāo)識(shí)對(duì)應(yīng)的事務(wù)回查記錄時(shí),就可W確定上述消息標(biāo)識(shí)對(duì)應(yīng)的 本地事務(wù)已提交,于是就可W通知消息中屯、投遞攜帶上述消息標(biāo)識(shí)的消息,從而可W通過 增加事務(wù)回查記錄的數(shù)據(jù)結(jié)構(gòu),將復(fù)雜的邏輯判斷改為對(duì)事務(wù)回查記錄的存在性判斷,大 大降低了事務(wù)提交狀態(tài)的判斷復(fù)雜度。
[0035] 圖2為本發(fā)明事務(wù)消息的發(fā)送方法另一個(gè)實(shí)施例的流程圖,如圖2所示,該事務(wù)消 息的發(fā)送方法可W包括:
[0036] 步驟201,應(yīng)用系統(tǒng)開啟本地事務(wù),在上述本地事務(wù)中增加向數(shù)據(jù)庫中插入事務(wù)回 查記錄的操作。
[0037] 其中,上述事務(wù)回查記錄的數(shù)據(jù)結(jié)構(gòu)可W如表1所示。
[0038] 步驟202,應(yīng)用系統(tǒng)執(zhí)行本地事務(wù)中包含的操作,并向消息中屯、發(fā)送本地事務(wù)對(duì)應(yīng) 的消息。其中,該消息中攜帶消息標(biāo)識(shí),該消息標(biāo)識(shí)即為上述本地事務(wù)的事務(wù)回查記錄中消 息標(biāo)識(shí)字段的值。
[0039] 步驟203,判斷本地事務(wù)中包含的操作是否均被成功執(zhí)行完畢。如果否,則執(zhí)行步 驟204 ;如果本地事務(wù)中包含的操作均被成功執(zhí)行完畢,則執(zhí)行步驟205。
[0040] 步驟204,本地事務(wù)回滾,數(shù)據(jù)庫中的數(shù)據(jù)不會(huì)發(fā)生任何更改,然后應(yīng)用系統(tǒng)通知 消息中屯、刪除上述本地事務(wù)對(duì)應(yīng)的消息。
[0041] 步驟205,本地事務(wù)提交,數(shù)據(jù)庫中的數(shù)據(jù)發(fā)生相應(yīng)更新,然后應(yīng)用系統(tǒng)通知消息 中屯、投遞上述本地事務(wù)對(duì)應(yīng)的消息。
[0042] 而如果由于網(wǎng)絡(luò)調(diào)用超時(shí)或者其他原因斷掉,使得應(yīng)用系統(tǒng)無法通知到消息中屯、 是投遞還是刪除上述本地事務(wù)對(duì)應(yīng)的消息,運(yùn)就導(dǎo)致消息中屯、無法確認(rèn)消息是需要投遞, 還是刪除,所W消息中屯、會(huì)發(fā)起事務(wù)回查,如圖3所示,圖3為本發(fā)明事務(wù)消息的發(fā)送方法 再一個(gè)實(shí)施例的流程圖,圖3所示實(shí)施例對(duì)消息中屯、發(fā)起事務(wù)回查的過程進(jìn)行介紹,可W 包括:
[0043] 步驟301,應(yīng)用系統(tǒng)接收消息中屯、發(fā)送的事務(wù)回查請(qǐng)求,上述事務(wù)回查請(qǐng)求中攜帶 消息標(biāo)識(shí),用于請(qǐng)求查詢上述消息標(biāo)識(shí)對(duì)應(yīng)的本地事務(wù)的提交狀態(tài)。
[0044] 步驟302,應(yīng)用系統(tǒng)查詢數(shù)據(jù)庫中是否存在上述消息標(biāo)識(shí)對(duì)應(yīng)的事務(wù)回查記錄。如 果存在,則執(zhí)行步驟303 ;如果數(shù)據(jù)庫中不存在上述消息標(biāo)識(shí)對(duì)應(yīng)的事務(wù)回查記錄,則執(zhí)行 步驟304。
[0045] 步驟303,應(yīng)用系統(tǒng)通知消息中屯、投遞攜帶上述消息標(biāo)識(shí)的消息。
[0046] 步驟304,應(yīng)用系統(tǒng)通知消息中屯、刪除攜帶上述消息標(biāo)識(shí)的消息。
[0047] 上述實(shí)施例通過增加事務(wù)回查記錄的數(shù)據(jù)結(jié)構(gòu),將復(fù)雜的邏輯判斷改為對(duì)事務(wù)回 查記錄的存在性判斷,大大降低了事務(wù)提交狀態(tài)的判斷復(fù)雜度。
[0048] 下面通過一個(gè)舉例對(duì)本發(fā)明所提供的事務(wù)消息的發(fā)送方法的具體實(shí)現(xiàn)過程進(jìn)行 說明。
[0049] 設(shè)想網(wǎng)上購物的一次交易,其付款過程至少包括W下幾步數(shù)據(jù)庫操作:
[0050] 一、更新客戶所購商品的庫存信息;
[0051] 二、保存客戶付款信息--可能包括與銀行系統(tǒng)的交互;
[0052] Ξ、生成訂單并且保存到數(shù)據(jù)庫中;
[0053] 四、更新用戶相關(guān)信息,例如購物數(shù)量等等。
[0054] 正常的情況下,運(yùn)些操作將順利進(jìn)行,最終交易成功,與交易相關(guān)的所有數(shù)據(jù)庫信 息也成功地更新。但是,如果在運(yùn)一系列過程中任何一個(gè)環(huán)節(jié)出了差錯(cuò),例如在更新商品庫 存信息時(shí)發(fā)生異常、該顧客銀行賬戶存款不足等,都將導(dǎo)致交易失敗。一旦交易失敗,數(shù)據(jù) 庫中所有信息都必須保持交易前的狀態(tài)不變,比如最后一步更新用戶信息時(shí)失敗而導(dǎo)致交 易失敗,那么必須保證運(yùn)筆失敗的交易不影響數(shù)據(jù)庫的狀態(tài)一一庫存信息沒有被更新、用 戶也沒有付款,訂單也沒有生成。否則,數(shù)據(jù)庫的信息將會(huì)一片混亂而不可預(yù)測(cè)。 陽化5] 數(shù)據(jù)庫事務(wù)正是用來保證運(yùn)種情況下交易的平穩(wěn)性和可預(yù)測(cè)性的技術(shù)。
[0056] 本例中,可W開啟一個(gè)本地事務(wù),該本地事務(wù)包含網(wǎng)上購物的一次交易所包括的 四步操作:更新客戶所購商品的庫存信息、保存客戶付款信息、生成訂單并且保存到數(shù)據(jù)庫 中和更新用戶相關(guān)信息,并且在本地事務(wù)中增加向數(shù)據(jù)庫中插入事務(wù)回查記錄的操作。然 后,應(yīng)用系統(tǒng)執(zhí)行本地事務(wù)中的操作,并向消息中屯、發(fā)送本地事務(wù)對(duì)應(yīng)的消息,該消息攜帶 消息標(biāo)識(shí),該消息標(biāo)識(shí)即為上述本地事務(wù)對(duì)應(yīng)的事務(wù)回查記錄中消息標(biāo)識(shí)字段的值。具體 到本例中,本地事務(wù)對(duì)應(yīng)的消息可W為通知用戶本次購物已成功,訂單已經(jīng)在配送中的通 知消息。如果應(yīng)用系統(tǒng)成功執(zhí)行完本地事務(wù)包含的所有操作,則向數(shù)據(jù)庫提交本地事務(wù),運(yùn) 時(shí)數(shù)據(jù)庫中的數(shù)據(jù)將發(fā)生相應(yīng)更新,然后應(yīng)用系統(tǒng)可W通知消息中屯、發(fā)送上述本地事務(wù)對(duì) 應(yīng)的消息。而如果本地事務(wù)包含的操作中有任何一個(gè)執(zhí)行失敗,本地事務(wù)回滾,數(shù)據(jù)庫中的 數(shù)據(jù)不會(huì)發(fā)生任何更改,運(yùn)時(shí)應(yīng)用系統(tǒng)將通知消息中屯、刪除上述本地事務(wù)對(duì)應(yīng)的消息。
[0057] 但是如果由于網(wǎng)絡(luò)調(diào)用超時(shí)或者其他原因斷掉,使得應(yīng)用系統(tǒng)無法通知到消息中 屯、是投遞還是刪除上述本地事務(wù)對(duì)應(yīng)的消息,運(yùn)就導(dǎo)致消息中屯、無法確認(rèn)消息是需要投 遞,還是需要?jiǎng)h除,所W消息中屯、會(huì)發(fā)起事務(wù)回查,向應(yīng)用系統(tǒng)發(fā)送事務(wù)回查請(qǐng)求,上述事 務(wù)回查請(qǐng)求中攜帶消息標(biāo)識(shí),用于請(qǐng)求查詢上述消息標(biāo)識(shí)對(duì)應(yīng)的本地事務(wù)的提交狀態(tài),然 后應(yīng)用系統(tǒng)查詢數(shù)據(jù)庫中是否存在上述消息標(biāo)識(shí)對(duì)應(yīng)的事務(wù)回查記錄,如果存在,則應(yīng)用 系統(tǒng)可W確定上述消息標(biāo)識(shí)對(duì)應(yīng)的本地事務(wù)已經(jīng)成功提交,于是通知消息中屯、投遞攜帶上 述消息標(biāo)識(shí)的消息;而如果數(shù)據(jù)庫中不存在上述消息標(biāo)識(shí)對(duì)應(yīng)的事務(wù)回查記錄,則應(yīng)用系 統(tǒng)可W確定上述消息標(biāo)識(shí)對(duì)應(yīng)的本地事務(wù)未被提交,于是通知消息中屯、刪除攜帶上述消息 標(biāo)識(shí)的消息。從而可W通過增加事務(wù)回查記錄的數(shù)據(jù)結(jié)構(gòu),將復(fù)雜的邏輯判斷改為對(duì)事務(wù) 回查記錄的存在性判斷,大大降低了事務(wù)提交狀態(tài)的判斷復(fù)雜度。
[0058] 圖4為本發(fā)明事務(wù)消息的發(fā)送裝置一個(gè)實(shí)施例的結(jié)構(gòu)示意圖,本實(shí)施例中的事務(wù) 消息的發(fā)送裝置可W作為應(yīng)用系統(tǒng),或應(yīng)用系統(tǒng)的一部分實(shí)現(xiàn)本發(fā)明圖1所示實(shí)施例的流 程,如圖4所示,上述事務(wù)消息的發(fā)送裝置可W包括:接收模塊41、查詢模塊42和通知模塊 43 ;
[0059] 其中,接收模塊41,用于接收消息中屯、發(fā)送的事務(wù)回查請(qǐng)求,上述事務(wù)回查請(qǐng)求中 攜帶消息標(biāo)識(shí),用于請(qǐng)求查詢上述消息標(biāo)識(shí)對(duì)應(yīng)的本地事務(wù)的提交狀態(tài)。
[0060] 查詢模塊42,用于查詢數(shù)據(jù)庫中是否存在接收模塊41接收的消息標(biāo)識(shí)對(duì)應(yīng)的事 務(wù)回查記錄;其中,該事務(wù)回查記錄包括消息標(biāo)識(shí)字段、該事務(wù)回查記錄的創(chuàng)建時(shí)間字段和 上述事務(wù)回查記錄的最后修改時(shí)間字段。具體地,事務(wù)回查記錄的數(shù)據(jù)結(jié)構(gòu)可W如表1所 /J、- 〇
[0061] 通知模塊43,用于當(dāng)查詢模塊42確定上述數(shù)據(jù)庫中存在接收模塊41接收的消息 標(biāo)識(shí)對(duì)應(yīng)的事務(wù)回查記錄時(shí),通知消息中屯、投遞攜帶上述消息標(biāo)識(shí)的消息。
[0062] 進(jìn)一步地,通知模塊43,還用于當(dāng)查詢模塊42確定上述數(shù)據(jù)庫中不存在上述消息 標(biāo)識(shí)對(duì)應(yīng)的事務(wù)回查記錄時(shí),通知消息中屯、刪除攜帶上述消息標(biāo)識(shí)的消息。
[0063] 上述事務(wù)消息的發(fā)送裝置中,接收模塊41接收消息中屯、發(fā)送的事務(wù)回查請(qǐng)求,當(dāng) 查詢模塊42查詢到數(shù)據(jù)庫中存在上述事務(wù)回查請(qǐng)求中攜帶的消息標(biāo)識(shí)對(duì)應(yīng)的事務(wù)回查記 錄時(shí),就可W確定上述消息標(biāo)識(shí)對(duì)應(yīng)的本地事務(wù)已提交,于是通知模塊43就可W通知消息 中屯、投遞攜帶上述消息標(biāo)識(shí)的消息,從而可W通過增加事務(wù)回查記錄的數(shù)據(jù)結(jié)構(gòu),將復(fù)雜 的邏輯判斷改為對(duì)事務(wù)回查記錄的存在性判斷,大大降低了事務(wù)提交狀態(tài)的判斷復(fù)雜度。
[0064] 圖5為本發(fā)明事務(wù)消息的發(fā)送裝置另一個(gè)實(shí)施例的結(jié)構(gòu)示意圖,與圖4所示的事 務(wù)消息的發(fā)送裝置相比,不同之處在于,圖5所示的事務(wù)消息的發(fā)送裝置還可W包括:開啟 模塊44、增加模塊45和提交模塊46 ; 陽0化]其中,開啟模塊44,用于在接收模塊41接收消息中屯、發(fā)送的事務(wù)回查請(qǐng)求之前, 開啟本地事務(wù);
[0066] 增加模塊45,用于在開啟模塊44開啟的本地事務(wù)中增加向數(shù)據(jù)庫中插入事務(wù)回 查記錄的操作;
[0067] 提交模塊46,用于在上述本地事務(wù)中包含的操作均執(zhí)行完畢之后,向數(shù)據(jù)庫提交 本地事務(wù)。
[0068] 進(jìn)一步地,上述事務(wù)消息的發(fā)送裝置還可W包括:
[0069] 發(fā)送模塊47,用于在增加模塊45在上述本地事務(wù)中增加向數(shù)據(jù)庫中插入事務(wù)回 查記錄的操作之后,向消息中屯、發(fā)送上述本地事務(wù)對(duì)應(yīng)的消息,該消息中攜帶上述消息標(biāo) 識(shí)。本實(shí)施例中,上述消息所攜帶的消息標(biāo)識(shí)即為發(fā)送該消息的本地事務(wù)的事務(wù)回查記錄 中消息標(biāo)識(shí)字段的值。
[0070] 上述事務(wù)消息的發(fā)送裝置可W通過增加事務(wù)回查記錄的數(shù)據(jù)結(jié)構(gòu),將復(fù)雜的邏輯 判斷改為對(duì)事務(wù)回查記錄的存在性判斷,大大降低了事務(wù)提交狀態(tài)的判斷復(fù)雜度。
[0071] 需要說明的是,在本發(fā)明的描述中,除非另有說明,"多個(gè)"的含義是兩個(gè)或兩個(gè)W 上。
[0072] 流程圖中或在此W其他方式描述的任何過程或方法描述可W被理解為,表示包括 一個(gè)或更多個(gè)用于實(shí)現(xiàn)特定邏輯功能或過程的步驟的可執(zhí)行指令的代碼的模塊、片段或部 分,并且本發(fā)明的優(yōu)選實(shí)施方式的范圍包括另外的實(shí)現(xiàn),其中可W不按所示出或討論的順 序,包括根據(jù)所設(shè)及的功能按基本同時(shí)的方式或按相反的順序,來執(zhí)行功能,運(yùn)應(yīng)被本發(fā)明 的實(shí)施例所屬技術(shù)領(lǐng)域的技術(shù)人員所理解。
[0073] 應(yīng)當(dāng)理解,本發(fā)明的各部分可W用硬件、軟件、固件或它們的組合來實(shí)現(xiàn)。在上 述實(shí)施方式中,多個(gè)步驟或方法可W用存儲(chǔ)在存儲(chǔ)器中且由合適的指令執(zhí)行系統(tǒng)執(zhí)行的 軟件或固件來實(shí)現(xiàn)。例如,如果用硬件來實(shí)現(xiàn),和在另一實(shí)施方式中一樣,可用本領(lǐng)域公 知的下列技術(shù)中的任一項(xiàng)或他們的組合來實(shí)現(xiàn):具有用于對(duì)數(shù)據(jù)信號(hào)實(shí)現(xiàn)邏輯功能的邏 輯口電路的離散邏輯電路,具有合適的組合邏輯口電路的專用集成電路,可編程口陣列 (Programm油le Gate Array;W下簡稱:PGA),現(xiàn)場(chǎng)可編程口陣列(Field Programm油le Gate Array 下簡稱:FPGA)等。
[0074] 本技術(shù)領(lǐng)域的普通技術(shù)人員可W理解實(shí)現(xiàn)上述實(shí)施例方法攜帶的全部或部分步 驟是可W通過程序來指令相關(guān)的硬件完成,所述的程序可W存儲(chǔ)于一種計(jì)算機(jī)可讀存儲(chǔ)介 質(zhì)中,該程序在執(zhí)行時(shí),包括方法實(shí)施例的步驟之一或其組合。
[00巧]此外,本發(fā)明各個(gè)實(shí)施例中的各功能模塊可W集成在一個(gè)處理模塊中,也可W是 各個(gè)模塊單獨(dú)物理存在,也可W兩個(gè)或兩個(gè)W上模塊集成在一個(gè)模塊中。上述集成的模塊 既可W采用硬件的形式實(shí)現(xiàn),也可W采用軟件功能模塊的形式實(shí)現(xiàn)。所述集成的模塊如果 W軟件功能模塊的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),也可W存儲(chǔ)在一個(gè)計(jì)算機(jī)可 讀取存儲(chǔ)介質(zhì)中。
[0076] 上述提到的存儲(chǔ)介質(zhì)可W是只讀存儲(chǔ)器,磁盤或光盤等。
[0077] 在本說明書的描述中,參考術(shù)語"一個(gè)實(shí)施例"、"一些實(shí)施例"、"示例"、"具體示 例"、或"一些示例"等的描述意指結(jié)合該實(shí)施例或示例描述的具體特征、結(jié)構(gòu)、材料或者特 點(diǎn)包含于本發(fā)明的至少一個(gè)實(shí)施例或示例中。在本說明書中,對(duì)上述術(shù)語的示意性表述不 一定指的是相同的實(shí)施例或示例。而且,描述的具體特征、結(jié)構(gòu)、材料或者特點(diǎn)可W在任何 的一個(gè)或多個(gè)實(shí)施例或示例中W合適的方式結(jié)合。
[007引盡管上面已經(jīng)示出和描述了本發(fā)明的實(shí)施例,可W理解的是,上述實(shí)施例是示例 性的,不能理解為對(duì)本發(fā)明的限制,本領(lǐng)域的普通技術(shù)人員在本發(fā)明的范圍內(nèi)可W對(duì)上述 實(shí)施例進(jìn)行變化、修改、替換和變型。
【主權(quán)項(xiàng)】
1. 一種事務(wù)消息的發(fā)送方法,其特征在于,包括: 接收消息中心發(fā)送的事務(wù)回查請(qǐng)求,所述事務(wù)回查請(qǐng)求中攜帶消息標(biāo)識(shí),用于請(qǐng)求查 詢所述消息標(biāo)識(shí)對(duì)應(yīng)的本地事務(wù)的提交狀態(tài); 查詢數(shù)據(jù)庫中是否存在所述消息標(biāo)識(shí)對(duì)應(yīng)的事務(wù)回查記錄; 如果存在,則通知所述消息中心投遞攜帶所述消息標(biāo)識(shí)的消息。2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述查詢數(shù)據(jù)庫中是否存在所述消息標(biāo) 識(shí)對(duì)應(yīng)的事務(wù)回查記錄之后,還包括: 如果所述數(shù)據(jù)庫中不存在所述消息標(biāo)識(shí)對(duì)應(yīng)的事務(wù)回查記錄,則通知所述消息中心刪 除攜帶所述消息標(biāo)識(shí)的消息。3. 根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述接收消息中心發(fā)送的事務(wù)回查請(qǐng) 求之前,還包括: 開啟本地事務(wù),在所述本地事務(wù)中增加向數(shù)據(jù)庫中插入事務(wù)回查記錄的操作; 在所述本地事務(wù)中包含的操作均執(zhí)行完畢之后,向所述數(shù)據(jù)庫提交所述本地事務(wù)。4. 根據(jù)權(quán)利要求3所述的方法,其特征在于,所述在所述本地事務(wù)中增加向數(shù)據(jù)庫中 插入事務(wù)回查記錄的操作之后,還包括: 向所述消息中心發(fā)送所述本地事務(wù)對(duì)應(yīng)的消息,所述消息中攜帶所述消息標(biāo)識(shí)。5. 根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述事務(wù)回查記錄包括消息標(biāo)識(shí)字 段、所述事務(wù)回查記錄的創(chuàng)建時(shí)間字段和所述事務(wù)回查記錄的最后修改時(shí)間字段。6. -種事務(wù)消息的發(fā)送裝置,其特征在于,包括: 接收模塊,用于接收消息中心發(fā)送的事務(wù)回查請(qǐng)求,所述事務(wù)回查請(qǐng)求中攜帶消息標(biāo) 識(shí),用于請(qǐng)求查詢所述消息標(biāo)識(shí)對(duì)應(yīng)的本地事務(wù)的提交狀態(tài); 查詢模塊,用于查詢數(shù)據(jù)庫中是否存在所述接收模塊接收的消息標(biāo)識(shí)對(duì)應(yīng)的事務(wù)回查 記錄; 通知模塊,用于當(dāng)所述查詢模塊確定所述數(shù)據(jù)庫中存在所述接收模塊接收的消息標(biāo)識(shí) 對(duì)應(yīng)的事務(wù)回查記錄時(shí),通知所述消息中心投遞攜帶所述消息標(biāo)識(shí)的消息。7. 根據(jù)權(quán)利要求6所述的裝置,其特征在于, 所述通知模塊,還用于當(dāng)所述查詢模塊確定所述數(shù)據(jù)庫中不存在所述消息標(biāo)識(shí)對(duì)應(yīng)的 事務(wù)回查記錄時(shí),通知所述消息中心刪除攜帶所述消息標(biāo)識(shí)的消息。8. 根據(jù)權(quán)利要求6或7所述的裝置,其特征在于,還包括: 開啟模塊,用于在所述接收模塊接收消息中心發(fā)送的事務(wù)回查請(qǐng)求之前,開啟本地事 務(wù); 增加模塊,用于在所述開啟模塊開啟的本地事務(wù)中增加向數(shù)據(jù)庫中插入事務(wù)回查記錄 的操作; 提交模塊,用于在所述本地事務(wù)中包含的操作均執(zhí)行完畢之后,向所述數(shù)據(jù)庫提交所 述本地事務(wù)。9. 根據(jù)權(quán)利要求8所述的裝置,其特征在于,還包括: 發(fā)送模塊,用于在所述增加模塊在所述本地事務(wù)中增加向數(shù)據(jù)庫中插入事務(wù)回查記錄 的操作之后,向所述消息中心發(fā)送所述本地事務(wù)對(duì)應(yīng)的消息,所述消息中攜帶所述消息標(biāo) 識(shí)。
【文檔編號(hào)】G06F9/46GK105988861SQ201510058248
【公開日】2016年10月5日
【申請(qǐng)日】2015年2月4日
【發(fā)明人】朱春茂, 林耿
【申請(qǐng)人】阿里巴巴集團(tuán)控股有限公司