一種消息中間件mq的消息傳輸方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)應(yīng)用領(lǐng)域,特別涉及一種消息中間件MQ的消息傳輸方法和裝置。
【背景技術(shù)】
[0002]MQ(通信隊(duì)列)作為一種消息中間件,用于將發(fā)送端的消息轉(zhuǎn)發(fā)給消費(fèi)端,以實(shí)現(xiàn)發(fā)送端與消費(fèi)端之間的通信。
[0003]目前,利用消息中間件MQ的消息傳輸方式可以包括:發(fā)送端成功將多個(gè)消息依次發(fā)送給消息中間件MQ,以使消息中間件MQ在接收到每個(gè)消息時(shí),將接收到的消息傳入消息隊(duì)列中,然后將消息隊(duì)列中的多個(gè)消息依次發(fā)送給消費(fèi)端,以供消息消費(fèi)端消費(fèi)。當(dāng)發(fā)送端發(fā)送消息失敗時(shí),則舍棄該發(fā)送失敗的消息,或,消費(fèi)端消費(fèi)消息失敗時(shí),則舍棄該消費(fèi)失敗的消息。由于舍棄了發(fā)送失敗的消息或消費(fèi)失敗的消息,對(duì)發(fā)送端向消費(fèi)端發(fā)送消息的完整性造成了影響,因此,現(xiàn)有的消息中間件MQ消息傳輸技術(shù)使消息的可靠性較低。
【發(fā)明內(nèi)容】
[0004]本發(fā)明提供一種消息中間件MQ的消息傳輸方法和裝置,以提高消息的可靠性。
[0005]一種消息中間件MQ的傳輸方法,包括:
[0006]獲取所需要傳輸?shù)哪繕?biāo)消息,并確定與所述目標(biāo)消息相鄰的消息在日志數(shù)據(jù)庫中的標(biāo)記信息;
[0007]在確定所述標(biāo)記信息為傳輸失敗時(shí),將所述目標(biāo)消息轉(zhuǎn)存入日志數(shù)據(jù)庫中,并標(biāo)記所述目標(biāo)消息傳輸失?。环駝t,對(duì)所述目標(biāo)消息進(jìn)行傳輸,并判斷傳輸結(jié)果;在傳輸結(jié)果為傳輸失敗時(shí),將所述目標(biāo)消息轉(zhuǎn)存入日志數(shù)據(jù)庫中,并標(biāo)記所述目標(biāo)消息傳輸失敗,在傳輸結(jié)果為傳輸成功時(shí),將所述目標(biāo)消息存入消息隊(duì)列,并同步到日志數(shù)據(jù)庫中,并標(biāo)記所述目標(biāo)消息傳輸成功;
[0008]根據(jù)預(yù)先設(shè)置的重試機(jī)制,對(duì)所述日志數(shù)據(jù)庫中標(biāo)記信息為傳輸失敗的消息進(jìn)行重新傳輸。
[0009]優(yōu)選地,對(duì)所述日志數(shù)據(jù)庫中標(biāo)記信息為傳輸失敗的消息進(jìn)行重新傳輸之后,進(jìn)一步包括:
[0010]在所述日志表中對(duì)重新傳輸成功的消息所對(duì)應(yīng)的標(biāo)記信息修改為傳輸成功。
[0011]優(yōu)選地,所述目標(biāo)消息的傳輸包括:發(fā)送,和/或,消費(fèi);
[0012]進(jìn)一步包括:所述日志數(shù)據(jù)庫利用發(fā)送端日志表保存發(fā)送的目標(biāo)消息以及標(biāo)記信息,和/或,所述日志數(shù)據(jù)庫利用消費(fèi)端日志表保存消費(fèi)的目標(biāo)消息以及標(biāo)記信息;
[0013]確定與所述目標(biāo)消息相鄰的消息在日志數(shù)據(jù)庫中的標(biāo)記信息,包括:確定與所述發(fā)送狀態(tài)的目標(biāo)消息相鄰的消息在所述發(fā)送端日志表中的標(biāo)記信息,和/或,確定與所述消費(fèi)狀態(tài)目標(biāo)消息相鄰的消息在所述消費(fèi)端日志表中的標(biāo)記信息;
[0014]將所述目標(biāo)消息轉(zhuǎn)存入日志數(shù)據(jù)庫中,包括:將所述發(fā)送狀態(tài)目標(biāo)消息轉(zhuǎn)存入所述發(fā)送端日志表中,和/或,將所述消費(fèi)狀態(tài)目標(biāo)消息轉(zhuǎn)存入所述消費(fèi)端日志表中。
[0015]優(yōu)選地,所述重試機(jī)制進(jìn)一步包括:定時(shí)器;
[0016]在將所述目標(biāo)消息進(jìn)行重新傳輸失敗時(shí),繼續(xù)等待定時(shí)器所設(shè)定的時(shí)間,并在到達(dá)定時(shí)器所設(shè)定的時(shí)間時(shí),將所述目標(biāo)消息進(jìn)行重新傳輸;
[0017]或,
[0018]在將所述目標(biāo)消息進(jìn)行重新傳輸失敗時(shí),將日志數(shù)據(jù)庫中其他等待重新傳輸?shù)南⑦M(jìn)行逐個(gè)傳輸。
[0019]優(yōu)選地,進(jìn)一步包括:在將所述目標(biāo)消息進(jìn)行重新傳輸?shù)拇螖?shù)達(dá)到重試機(jī)制中所設(shè)定的閾值次數(shù)時(shí),調(diào)用預(yù)警接口進(jìn)行預(yù)警提示。
[0020]一種消息中間件MQ的傳輸裝置,包括:
[0021]確定單元,用于獲取所需要傳輸?shù)哪繕?biāo)消息,并確定與所述目標(biāo)消息相鄰的消息在日志數(shù)據(jù)庫中的標(biāo)記信息;
[0022]轉(zhuǎn)存單元,用于在所述確定單元確定所述標(biāo)記信息為傳輸失敗時(shí),將所述目標(biāo)消息轉(zhuǎn)存入日志數(shù)據(jù)庫中,并標(biāo)記所述目標(biāo)消息傳輸失??;
[0023]傳輸單元,用于在在所述確定單元確定所述標(biāo)記信息為傳輸成功時(shí),對(duì)所述目標(biāo)消息進(jìn)行傳輸,觸發(fā)判斷單元;
[0024]所述判斷單元,用于判斷所述傳輸單元的傳輸結(jié)果,在傳輸結(jié)果為傳輸失敗時(shí),將所述目標(biāo)消息轉(zhuǎn)存入日志數(shù)據(jù)庫中,并標(biāo)記所述目標(biāo)消息傳輸失敗,在傳輸結(jié)果為傳輸成功時(shí),將所述目標(biāo)消息存入消息隊(duì)列,并同步到日志數(shù)據(jù)庫中,并標(biāo)記所述目標(biāo)消息傳輸成功;
[0025]重試單元,用于根據(jù)預(yù)先設(shè)置的重試機(jī)制,對(duì)所述日志數(shù)據(jù)庫中標(biāo)記信息為傳輸失敗的消息進(jìn)行重新傳輸。
[0026]優(yōu)選地,該裝置進(jìn)一步包括:修改單元,
[0027]所述修改單元,用于將所述重試單元重試傳輸成功的消息所對(duì)應(yīng)的標(biāo)記信息修改為傳輸成功。
[0028]優(yōu)選地,該裝置進(jìn)一步包括:保存單元,其中,
[0029]所述目標(biāo)消息的傳輸包括:發(fā)送,和/或,消費(fèi);
[0030]所述保存單元,用于所述日志數(shù)據(jù)庫利用發(fā)送端日志表保存發(fā)送的目標(biāo)消息以及標(biāo)記信息,和/或,所述日志數(shù)據(jù)庫利用消費(fèi)端日志表保存消費(fèi)的目標(biāo)消息以及標(biāo)記信息;
[0031]所述確定單元,進(jìn)一步用于確定與所述發(fā)送狀態(tài)的目標(biāo)消息相鄰的消息在所述發(fā)送端日志表中的標(biāo)記信息,和/或,確定與所述消費(fèi)狀態(tài)目標(biāo)消息相鄰的消息在所述消費(fèi)端日志表中的標(biāo)記信息;
[0032]所述轉(zhuǎn)存單元,進(jìn)一步用于將所述發(fā)送狀態(tài)目標(biāo)消息轉(zhuǎn)存入所述發(fā)送端日志表中,和/或,將所述消費(fèi)狀態(tài)目標(biāo)消息轉(zhuǎn)存入所述消費(fèi)端日志表中。
[0033]優(yōu)選地,所述重試單元,進(jìn)一步用于:
[0034]在將所述目標(biāo)消息進(jìn)行重新傳輸失敗時(shí),繼續(xù)等待定時(shí)器所設(shè)定的時(shí)間,并在到達(dá)定時(shí)器所設(shè)定的時(shí)間時(shí),將所述目標(biāo)消息進(jìn)行重新傳輸;
[0035]或,
[0036]在將所述目標(biāo)消息進(jìn)行重新傳輸失敗時(shí),將日志數(shù)據(jù)庫中其他等待重新傳輸?shù)南⑦M(jìn)行逐個(gè)傳輸。
[0037]優(yōu)選地,該裝置進(jìn)一步包括:預(yù)警單元,
[0038]所述預(yù)警單元,用于在將所述目標(biāo)消息進(jìn)行重新傳輸?shù)拇螖?shù)達(dá)到重試機(jī)制中所設(shè)定的閾值次數(shù)時(shí),調(diào)用預(yù)警接口進(jìn)行預(yù)警提示。
[0039]本發(fā)明實(shí)施例提供了一種消息中間件MQ的消息傳輸方法和裝置,其通過獲取所需要傳輸?shù)哪繕?biāo)消息,并確定與所述目標(biāo)消息相鄰的消息在日志數(shù)據(jù)庫中的標(biāo)記信息;在確定所述標(biāo)記信息為傳輸失敗時(shí),將所述目標(biāo)消息轉(zhuǎn)存入日志數(shù)據(jù)庫中,并標(biāo)記所述目標(biāo)消息傳輸失??;否則,對(duì)所述目標(biāo)消息進(jìn)行傳輸,并判斷傳輸結(jié)果;在傳輸結(jié)果為傳輸失敗時(shí),將所述目標(biāo)消息轉(zhuǎn)存入日志數(shù)據(jù)庫中,并標(biāo)記所述目標(biāo)消息傳輸失敗,在傳輸結(jié)果為傳輸成功時(shí),將所述目標(biāo)消息存入消息隊(duì)列,并同步到日志數(shù)據(jù)庫中,并標(biāo)記所述目標(biāo)消息傳輸成功;根據(jù)預(yù)先設(shè)置的重試機(jī)制,對(duì)所述日志數(shù)據(jù)庫中標(biāo)記信息為傳輸失敗的消息進(jìn)行重新傳輸。在這一過程中,由于傳輸失敗的消息將轉(zhuǎn)存入所述日志數(shù)據(jù)庫,與現(xiàn)有技術(shù)相比,其不會(huì)丟失所述傳輸失敗的消息,因此,有效提高了提高消息的可靠性。
[0040]本發(fā)明實(shí)施例通過重試機(jī)制和具有閥值的預(yù)警接口,可以將日志數(shù)據(jù)庫中傳輸失敗的消息自動(dòng)重試,通過預(yù)警接口可以發(fā)送預(yù)警信息,提醒工作人員處理傳輸過程中的問題,也進(jìn)一步提高了消息的可靠性。
[0041]本發(fā)明實(shí)施例通過對(duì)發(fā)送端發(fā)送失敗消息進(jìn)行轉(zhuǎn)存,可以防止發(fā)送消息的丟失,對(duì)消費(fèi)端消費(fèi)失敗消息進(jìn)行轉(zhuǎn)存,不僅可有效防止消費(fèi)消息丟失,而且可以有效防止消息循環(huán)造成的隊(duì)列堵塞。
【附圖說明】
[0042]圖1是本發(fā)明實(shí)施例提供的消息中間件MQ的消息傳輸方法流程圖;
[0043]圖2是本發(fā)明另一實(shí)施例提供的消息中間件MQ接收發(fā)送端發(fā)送消息的方法流程圖;
[0044]圖3是本發(fā)明又一實(shí)施例提供的消息中間件MQ為消費(fèi)端發(fā)送消費(fèi)消息的方法流程圖;
[0045]圖4是本發(fā)明實(shí)施例提供的消息中間件MQ的傳輸裝置所在架構(gòu)示意圖;
[0046]圖5是本發(fā)明實(shí)施例提供的消息中間件MQ的傳輸裝置結(jié)構(gòu)示意圖;
[0047]圖6是本發(fā)明另一實(shí)施例提供的消息中間件MQ的傳輸裝置結(jié)構(gòu)示意圖;
[0048]圖7是本發(fā)明又一實(shí)施例提供的消息中間件MQ的傳輸裝置結(jié)構(gòu)示意圖;
[0049]圖8是本發(fā)明又一實(shí)施例提供的消息中間件MQ的傳輸裝置結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0050]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述。顯然,所描述的實(shí)施例僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本