最新的毛片基地免费,国产国语一级毛片,免费国产成人高清在线电影,中天堂国产日韩欧美,中国国产aa一级毛片,国产va欧美va在线观看,成人不卡在线

消息管理方法及裝置、消息預(yù)讀方法及裝置與流程

文檔序號:11180472閱讀:764來源:國知局
消息管理方法及裝置、消息預(yù)讀方法及裝置與流程

本發(fā)明涉及通信領(lǐng)域,尤其涉及一種消息管理方法及裝置、消息預(yù)讀方法及裝置。



背景技術(shù):

在云計(jì)算中,消息管理是非常重要的一個(gè)環(huán)節(jié),它影響著整個(gè)云計(jì)算系統(tǒng)的性能。這里首先說明一下與消息有關(guān)的術(shù)語:

消息隊(duì)列先進(jìn)先出:先進(jìn)入隊(duì)列的消息優(yōu)先被消費(fèi)。

消息可靠性:消息進(jìn)入消息隊(duì)列后被持久化到磁盤,保證消息不會因掉電丟失。

至少消費(fèi)一次:消息只有在消費(fèi)成功后才會被用戶主動(dòng)刪除,否則可以一直被消費(fèi)。

活躍的消息:可以被消費(fèi)的消息。

不活躍的消息:正在被用戶消費(fèi)的消息。

刪除的消息:被用戶主動(dòng)標(biāo)志為已消費(fèi)的消息。

消息的處理過程是,首先,消息生產(chǎn)者(也可稱為客戶端)將生產(chǎn)的消息寫入磁盤;在緩存為空時(shí),觸發(fā)一次預(yù)讀操作,將消息從磁盤預(yù)讀到緩存中;消息消費(fèi)者(也可稱為客戶端)從緩存中讀取出消息,進(jìn)行消費(fèi)。如果消息消費(fèi)失敗,則復(fù)活消息到磁盤中。

可靠消息系統(tǒng)在服務(wù)端持久化消息的讀取狀態(tài),來保證消息“至少消費(fèi)一次”。同時(shí)需要返回當(dāng)前消息隊(duì)列中最先入隊(duì)的消息,來保證消息隊(duì)列先進(jìn)先出的特性。每個(gè)進(jìn)入消息隊(duì)列的消息都會分配一個(gè)消息編號(也即消息id),消息編號按照消息入隊(duì)的先后有序。如果消息未能被成功消費(fèi),將會再次入隊(duì)來確保能夠被再次消費(fèi)。這樣系統(tǒng)當(dāng)前的最先入隊(duì)的消息是動(dòng)態(tài)變化的。

一種相關(guān)技術(shù)中,通過如下方式獲取最先入隊(duì)的消息:在消息的元數(shù) 據(jù)信息中增加兩個(gè)屬性,一個(gè)屬性用來記錄消息是否已經(jīng)被成功消費(fèi),另一個(gè)屬性記錄下一個(gè)消息的位置。在消息被發(fā)送到消息系統(tǒng)中時(shí)將消息的消費(fèi)狀態(tài)設(shè)置為“未消費(fèi)”,在用戶消費(fèi)獲取消息后將消息狀態(tài)設(shè)置為“正在消費(fèi)”,用戶成功消費(fèi)消息后主動(dòng)將消息的狀態(tài)設(shè)置為“已消費(fèi)”。服務(wù)端記錄當(dāng)前系統(tǒng)中第一個(gè)“未消費(fèi)”消息的位置。該相關(guān)技術(shù)為了保證消息的先進(jìn)先出需要順序消費(fèi)消息,無法支持并發(fā)消費(fèi),限制了消息的處理速度,而且該相關(guān)技術(shù)中,修改消息的屬性還會導(dǎo)致隨機(jī)寫磁盤,嚴(yán)重影響系統(tǒng)的性能。

另一種相關(guān)技術(shù)中,通過如下方式獲取最先入隊(duì)的消息:將一個(gè)消息隊(duì)列分成兩部分,即“未消費(fèi)的消息隊(duì)列”和“正在消費(fèi)的消息隊(duì)列”。消息發(fā)送至系統(tǒng)后進(jìn)入“未消費(fèi)的消息隊(duì)列”。用戶獲取消息后,消息出“未消費(fèi)的消息隊(duì)列”,進(jìn)入“正在消費(fèi)的消息隊(duì)列”。消費(fèi)成功后,用戶主動(dòng)將消息從“正在消費(fèi)的消息隊(duì)列”中刪除。否則,在超出約定的時(shí)間后,系統(tǒng)會把消息從“正在消費(fèi)的消息隊(duì)列”移至“未消費(fèi)的消息隊(duì)列”的隊(duì)尾,使消息可以被再次消費(fèi),來保證消息至少被消費(fèi)一次。該相關(guān)技術(shù)在消息消費(fèi)失敗的時(shí)候,系統(tǒng)需要把該消息再次加入“未消費(fèi)的消息隊(duì)列”的隊(duì)尾,會嚴(yán)重影響消息先進(jìn)先出的特性。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明的目的在于提供一種消息管理方法及裝置、消息預(yù)讀方法及裝置,在保證消息先進(jìn)先出特性的前提下,提高消息預(yù)讀速度,提升系統(tǒng)性能。

為實(shí)現(xiàn)上述目的,本發(fā)明提出了一種消息管理方法,包括:

在內(nèi)存中記錄消息隊(duì)列中可消費(fèi)消息的編號范圍;

根據(jù)所述消息隊(duì)列中消息的狀態(tài)變化情況調(diào)整所述編號范圍和管理消息。

進(jìn)一步地,上述方法還可具有以下特點(diǎn),所述編號范圍包括至少一個(gè)編號區(qū)間,且任意兩個(gè)編號區(qū)間不重疊。

進(jìn)一步地,上述方法還可具有以下特點(diǎn),所述編號范圍中的各編號區(qū)間按照區(qū)間右端點(diǎn)消息編號從小到大的順序排列。

進(jìn)一步地,上述方法還可具有以下特點(diǎn),所述根據(jù)所述消息隊(duì)列中消息的狀態(tài)變化情況調(diào)整所述編號范圍和管理消息,包括:

在從緩存中取出所述消息隊(duì)列中被預(yù)讀到所述緩存的消息供客戶端消費(fèi)之后,縮小所述編號范圍,將所述取出的消息的編號排除在所述編號范圍之外,且在所述消息隊(duì)列中將所述取出的消息標(biāo)記為不可消費(fèi)消息。

進(jìn)一步地,上述方法還可具有以下特點(diǎn),所述根據(jù)所述消息隊(duì)列中消息的狀態(tài)變化情況調(diào)整所述編號范圍和管理消息,包括:

在客戶端超時(shí)未返回消費(fèi)結(jié)果的情況下,擴(kuò)大所述編號范圍,使所述超時(shí)未返回消費(fèi)結(jié)果的消息的編號包括在所述編號范圍之內(nèi),且在所述消息隊(duì)列中將所述超時(shí)未返回消費(fèi)結(jié)果的消息標(biāo)記為可消費(fèi)消息。

進(jìn)一步地,上述方法還可具有以下特點(diǎn),所述根據(jù)所述消息隊(duì)列中消息的狀態(tài)變化情況調(diào)整所述編號范圍和管理消息,包括:

在客戶端成功消費(fèi)消息的情況下,在所述消息隊(duì)列將消費(fèi)成功的消息刪除。

進(jìn)一步地,上述方法還可具有以下特點(diǎn),所述根據(jù)所述消息隊(duì)列中消息的狀態(tài)變化情況調(diào)整所述編號范圍和管理消息,包括:

在從所述消息隊(duì)列預(yù)讀消息到緩存之后,所述編號范圍中的非最大編號區(qū)間對應(yīng)的全部可消費(fèi)消息都已被預(yù)讀的情況下,從所述編號范圍中刪除所述非最大編號區(qū)間。

本發(fā)明實(shí)施例的消息管理方法,通過編號范圍來管理消息隊(duì)列中可消費(fèi)消息的編號,在保證消息先進(jìn)先出特性的前提下提高了消息預(yù)讀速度,提升了消息系統(tǒng)性能。

為實(shí)現(xiàn)上述目的,本發(fā)明還提出了一種消息管理裝置,包括:

記錄模塊,用于在內(nèi)存中記錄消息隊(duì)列中可消費(fèi)消息的編號范圍;

調(diào)整模塊,用于根據(jù)所述消息隊(duì)列中消息的狀態(tài)變化情況調(diào)整所述記錄模塊記錄的所述編號范圍和管理消息。

進(jìn)一步地,上述裝置還可具有以下特點(diǎn),所述編號范圍包括至少一個(gè)編號區(qū)間,且任意兩個(gè)編號區(qū)間不重疊。

進(jìn)一步地,上述裝置還可具有以下特點(diǎn),所述編號范圍中的各編號區(qū)間按照區(qū)間右端點(diǎn)消息編號從小到大的順序排列。

進(jìn)一步地,上述裝置還可具有以下特點(diǎn),所述調(diào)整模塊包括:

縮小單元,用于在從緩存中取出所述消息隊(duì)列中被預(yù)讀到所述緩存的消息供客戶端消費(fèi)之后,縮小所述編號范圍,將所述取出的消息的編號排除在所述編號范圍之外,且在所述消息隊(duì)列中將所述取出的消息標(biāo)記為不可消費(fèi)消息。

進(jìn)一步地,上述裝置還可具有以下特點(diǎn),所述調(diào)整模塊包括:

擴(kuò)大單元,用于在客戶端超時(shí)未返回消費(fèi)結(jié)果的情況下,擴(kuò)大所述編號范圍,使所述超時(shí)未返回消費(fèi)結(jié)果的消息的編號包括在所述編號范圍之內(nèi),且在所述消息隊(duì)列中將所述超時(shí)未返回消費(fèi)結(jié)果的消息標(biāo)記為可消費(fèi)消息。

進(jìn)一步地,上述裝置還可具有以下特點(diǎn),所述調(diào)整模塊包括:

消息刪除單元,用于在客戶端成功消費(fèi)消息的情況下,在所述消息隊(duì)列將消費(fèi)成功的消息刪除。

進(jìn)一步地,上述裝置還可具有以下特點(diǎn),所述調(diào)整模塊包括:

區(qū)間刪除單元,用于在從所述消息隊(duì)列預(yù)讀消息到緩存之后,所述編號范圍中的非最大編號區(qū)間對應(yīng)的全部可消費(fèi)消息都已被預(yù)讀的情況下,從所述編號范圍中刪除所述非最大編號區(qū)間。

本發(fā)明實(shí)施例的消息管理裝置,通過編號范圍來管理消息隊(duì)列中可消費(fèi)消息的編號,在保證消息先進(jìn)先出特性的前提下提高了消息預(yù)讀速度,提升了消息系統(tǒng)性能。

為實(shí)現(xiàn)上述目的,本發(fā)明還提出了一種消息預(yù)讀方法,包括:

查詢內(nèi)存中記錄的消息隊(duì)列中可消費(fèi)消息的編號范圍,確定所述消息隊(duì)列中編號最小的n個(gè)可消費(fèi)消息的編號,n為自然數(shù);

根據(jù)確定的所述n個(gè)可消費(fèi)消息的編號從所述消息隊(duì)列中預(yù)讀相應(yīng)的消息到緩存。

進(jìn)一步地,上述方法還可具有以下特點(diǎn),所述編號范圍包括至少一個(gè)編號區(qū)間,且任意兩個(gè)編號區(qū)間不重疊。

進(jìn)一步地,上述方法還可具有以下特點(diǎn),所述編號范圍中的各編號區(qū)間按照區(qū)間右端點(diǎn)消息編號從小到大的順序排列。

本發(fā)明實(shí)施例的消息預(yù)讀方法,能夠根據(jù)內(nèi)存中按照消息編號的順序 記錄的消息隊(duì)列中可消費(fèi)消息的編號范圍快速查詢到消息隊(duì)列中編號最小的設(shè)定數(shù)目個(gè)可消費(fèi)消息的編號,并且還保證了消息的先進(jìn)先出特性,提高了消息預(yù)讀速度,提升了消息系統(tǒng)性能。

為實(shí)現(xiàn)上述目的,本發(fā)明還提出了一種消息預(yù)讀裝置,包括:

查詢模塊,用于查詢內(nèi)存中記錄的消息隊(duì)列中可消費(fèi)消息的編號范圍,確定所述消息隊(duì)列中編號最小的n個(gè)可消費(fèi)消息的編號,n為自然數(shù);

預(yù)讀模塊,用于根據(jù)所述查詢模塊確定的所述n個(gè)可消費(fèi)消息的編號從所述消息隊(duì)列中預(yù)讀相應(yīng)的消息到緩存。

進(jìn)一步地,上述裝置還可具有以下特點(diǎn),所述編號范圍包括至少一個(gè)編號區(qū)間,且任意兩個(gè)編號區(qū)間不重疊。

進(jìn)一步地,上述裝置還可具有以下特點(diǎn),所述編號范圍中的各編號區(qū)間按照區(qū)間右端點(diǎn)消息編號從小到大的順序排列。

本發(fā)明實(shí)施例的消息預(yù)讀裝置,能夠根據(jù)內(nèi)存中按照消息編號的順序記錄的消息隊(duì)列中可消費(fèi)消息的編號范圍快速查詢到消息隊(duì)列中編號最小的設(shè)定數(shù)目個(gè)可消費(fèi)消息的編號,并且還保證了消息的先進(jìn)先出特性,提高了消息預(yù)讀速度,提升了消息系統(tǒng)性能。

為實(shí)現(xiàn)上述目的,本發(fā)明還提出了一種消息管理設(shè)備,包括前述任一項(xiàng)所述的消息管理裝置。

本發(fā)明實(shí)施例的消息管理設(shè)備中包括消息管理裝置,通過編號范圍來管理消息隊(duì)列中可消費(fèi)消息的編號,在保證消息先進(jìn)先出特性的前提下提高了消息預(yù)讀速度,提升了消息系統(tǒng)性能。

為實(shí)現(xiàn)上述目的,本發(fā)明還提出了一種消息預(yù)讀設(shè)備,包括前述任一項(xiàng)所述的消息預(yù)讀裝置。

本發(fā)明實(shí)施例的消息預(yù)讀設(shè)備中包括消息預(yù)讀裝置,能夠根據(jù)內(nèi)存中按照消息編號的順序記錄的消息隊(duì)列中可消費(fèi)消息的編號范圍快速查詢到消息隊(duì)列中編號最小的設(shè)定數(shù)目個(gè)可消費(fèi)消息的編號,并且還保證了消息的先進(jìn)先出特性,提高了消息預(yù)讀速度,提升了消息系統(tǒng)性能。

附圖說明

圖1為本發(fā)明實(shí)施例中消息的處理過程示意圖。

圖2為本發(fā)明實(shí)施例一中消息管理方法的流程圖。

圖3為在復(fù)活消息msgid時(shí)對消息msgid的前驅(qū)游標(biāo)域進(jìn)行擴(kuò)大的示意圖。

圖4為本發(fā)明實(shí)施例二中消息管理裝置的結(jié)構(gòu)框圖。

圖5為本發(fā)明實(shí)施例三中消息預(yù)讀方法的流程圖。

圖6為本發(fā)明實(shí)施例四中消息預(yù)讀裝置的結(jié)構(gòu)框圖。

圖7為本發(fā)明實(shí)施例五中消息管理設(shè)備的結(jié)構(gòu)框圖。

圖8為本發(fā)明實(shí)施例六中消息預(yù)讀設(shè)備的結(jié)構(gòu)框圖。

圖9為本發(fā)明實(shí)施例七中設(shè)備900的結(jié)構(gòu)框圖。

具體實(shí)施方式

以下結(jié)合附圖對本發(fā)明的原理和特征進(jìn)行描述,所舉實(shí)施例只用于解釋本發(fā)明,并非用于限定本發(fā)明的范圍。對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,根據(jù)本發(fā)明精神所獲得的所有實(shí)施例,都屬于本發(fā)明的保護(hù)范圍。

圖1為本發(fā)明實(shí)施例中消息的處理過程示意圖。如圖1所示,本發(fā)明實(shí)施例中,消息的處理過程是:

客戶端將生成的消息寫入磁盤,消息進(jìn)入消息隊(duì)列;

緩存為空時(shí),從磁盤批量獲取n個(gè)最先進(jìn)入消息隊(duì)列的消息到緩存,此為消息預(yù)讀操作;

從緩存讀取消息供客戶端進(jìn)行消費(fèi),并在消息隊(duì)列中將被讀取的消息標(biāo)記為不可消費(fèi)消息;

客戶端消費(fèi)完成后,向服務(wù)器返回消費(fèi)結(jié)果;

管理模塊根據(jù)消費(fèi)結(jié)果處理磁盤中的相應(yīng)消息:如果消費(fèi)成功,則刪除消息隊(duì)列中的相應(yīng)消息,如果客戶端超時(shí)未返回消息消費(fèi)成功的信息,則認(rèn)為消息消費(fèi)失敗,復(fù)活該消息,將消息隊(duì)列中的該消息標(biāo)記為可消費(fèi)消息。

在整個(gè)消息的處理過程中,可以在內(nèi)存中用游標(biāo)記錄消息隊(duì)列中可消費(fèi)消息的編號范圍。

圖2為本發(fā)明實(shí)施例一中消息管理方法的流程圖。如圖2所示,本實(shí) 施例中,消息管理方法可以包括如下步驟:

步驟s201,在內(nèi)存中記錄消息隊(duì)列中可消費(fèi)消息的編號范圍;

其中,該編號范圍可以包括至少一個(gè)編號區(qū)間,且任意兩個(gè)編號區(qū)間不重疊。

其中,消息編號代表消息進(jìn)入消息隊(duì)列的順序,消息編號越小,表明該消息進(jìn)入消息隊(duì)列越早。例如,消息10是第10個(gè)進(jìn)入消息隊(duì)列的消息。

由于可消費(fèi)消息的編號范圍是按照消息編號的順序記錄的,因此可以保證消息的先進(jìn)先出特性??上M(fèi)消息的編號范圍可以作為查詢要預(yù)讀的批量消息的依據(jù)。通過可消費(fèi)消息的編號范圍不僅可以快速查找到要預(yù)讀到緩存的批量消息,而且保證了消息的先進(jìn)先出特性。

在本發(fā)明實(shí)施例中,編號范圍中的各編號區(qū)間按照區(qū)間右端點(diǎn)消息編號從小到大的順序排列。本文中,將這樣的編號范圍稱為游標(biāo)域集合,將這樣的編號范圍中的編號區(qū)間稱為游標(biāo)域。游標(biāo)域用左閉右開區(qū)間表示。

本文中,將編號范圍的編號區(qū)間的兩個(gè)端點(diǎn)處的消息編號分別稱為左端點(diǎn)消息編號和右端點(diǎn)消息編號。

當(dāng)然,在本發(fā)明其他實(shí)施例中,所述的編號范圍可以采用其他形式表示,只要其能夠表明消息隊(duì)列中可消費(fèi)消息的編號范圍,并且能夠表明這些可消費(fèi)消息的編號順序即可。這樣,就可以保證通過該編號范圍就能查詢到消息隊(duì)列中哪些消息可以消費(fèi),并保證這些可消費(fèi)的消息能夠按照先進(jìn)先出的特性被取出消費(fèi)。

以下將消息隊(duì)列中可消費(fèi)消息的編號范圍簡稱為編號范圍。

步驟s202,根據(jù)消息隊(duì)列中消息的狀態(tài)變化情況調(diào)整該編號范圍和管理消息。

在本發(fā)明實(shí)施例中,根據(jù)消息隊(duì)列中消息的狀態(tài)變化情況調(diào)整編號范圍和管理消息可以包括:在從緩存中取出消息隊(duì)列中被預(yù)讀到緩存的消息供客戶端消費(fèi)之后,縮小編號范圍,將取出的消息的編號排除在該編號范圍之外,且在消息隊(duì)列中將該取出的消息標(biāo)記為不可消費(fèi)消息。

例如,假設(shè)編號范圍的初始狀態(tài)為{[1,101)},消息隊(duì)列中被預(yù)讀到緩存的消息為消息1至消息10這10個(gè)消息,在從緩存中取出這10個(gè)消息之后,將編號范圍{[1,101)}縮小為{[11,101)},使得消息1至消息10 這10個(gè)消息的編號被排除在了可消費(fèi)消息的編號范圍之外。

消息消費(fèi)者從緩存中取出的消息進(jìn)入到非活躍消息隊(duì)列,屬于不活躍的消息,也即正在被用戶消費(fèi)的消息。如果這些消息被消費(fèi)成功,那么這些消息就屬于不可消費(fèi)的消息,將被排除出可消費(fèi)消息的范圍。這里將所有從緩存中取出的消息都先按照消費(fèi)成功的情況處理,如果消費(fèi)失敗,再通過后續(xù)的復(fù)活機(jī)制加入到可消費(fèi)消息的范圍中。

在本發(fā)明實(shí)施例中,根據(jù)消息隊(duì)列中消息的狀態(tài)變化情況調(diào)整編號范圍和管理消息還可以包括:在客戶端超時(shí)未返回消費(fèi)結(jié)果的情況下,擴(kuò)大編號范圍,使超時(shí)未返回消費(fèi)結(jié)果的消息的編號包括在該編號范圍之內(nèi),且在消息隊(duì)列中將該超時(shí)未返回消費(fèi)結(jié)果的消息標(biāo)記為可消費(fèi)消息。其中,如果客戶端超時(shí)未返回消費(fèi)結(jié)果,可以認(rèn)為消息消費(fèi)失敗,因此,將超時(shí)未返回消費(fèi)結(jié)果的消息稱為消費(fèi)失敗的消息。這就是消費(fèi)失敗的消息的復(fù)活機(jī)制。通過將消費(fèi)失敗的消息的編號包括到編號范圍之內(nèi),使得可以對該消息進(jìn)行再次消費(fèi),并且可以按照先進(jìn)先出的特性進(jìn)行消費(fèi)。

這里,以游標(biāo)域集合為例,對因消息消費(fèi)失敗而擴(kuò)大可消費(fèi)消息的編號范圍的情況進(jìn)行說明。

具體地,在消息隊(duì)列中的消息消費(fèi)失敗的情況下,擴(kuò)大編號范圍,使消費(fèi)失敗的消息的編號包括在該編號范圍之內(nèi),可以通過如下步驟實(shí)現(xiàn):

消費(fèi)失敗的消息也就是要復(fù)活的消息。

步驟a,假設(shè)復(fù)活的消息的消息id為msgid,根據(jù)msgid,在游標(biāo)域集合中定位游標(biāo)域[msgid,msgid+1)的上界游標(biāo)域,記上界游標(biāo)域?yàn)閇upper_beginid,upper_endid),其中,msgid的上界游標(biāo)域是指游標(biāo)域集合中第一個(gè)右端點(diǎn)消息編號大于msgid+1的游標(biāo)域;

步驟b,如果該上界游標(biāo)域[upper_beginid,upper_endid)已經(jīng)包含msgid,則結(jié)束流程,不再調(diào)整游標(biāo)域;

步驟c,如果該上界游標(biāo)域的左端點(diǎn)消息編號upper_beginid>msgid,則進(jìn)行后續(xù)操作來調(diào)整游標(biāo)域集合以使游標(biāo)域集合涵蓋msgid;

步驟d,獲取消息msgid的前驅(qū)游標(biāo)域[pre_beginid,pre_endid),其中,消息msgid的前驅(qū)游標(biāo)域是指游標(biāo)域集合中第一個(gè)右端點(diǎn)消息編號小于msgid+1的游標(biāo)域;

步驟e,如果消息msgid的前驅(qū)游標(biāo)域不存在,則將[msgid,msgid+1)加入游標(biāo)域集合,然后結(jié)束流程;

步驟f,如果消息msgid的前驅(qū)游標(biāo)域存在,則將游標(biāo)域[pre_beginid,msgid+1)和游標(biāo)域[msgid,upper_endid)中范圍較小且不超過max_range_size的游標(biāo)域加入游標(biāo)域集合,來替換前驅(qū)游標(biāo)域或者上界游標(biāo)域(如果兩者中游標(biāo)域[pre_beginid,msgid+1)范圍較小,就用[pre_beginid,msgid+1)替換前驅(qū)游標(biāo)域[pre_beginid,pre_endid),如果兩者中游標(biāo)域[msgid,upper_endid)范圍較小,就用[msgid,upper_endid)替換上界游標(biāo)域[upper_beginid,upper_endid)),其中,max_range_size為預(yù)設(shè)的游標(biāo)域的最大范圍;

步驟g,如果消息msgid的前驅(qū)游標(biāo)域存在,且將游標(biāo)域[pre_beginid,msgid+1)和游標(biāo)域[msgid,upper_endid)的范圍都超過max_range_size,則將[msgid,msgid+1)加入游標(biāo)域集合。

需要說明的是,在步驟f中,如果游標(biāo)域集合的規(guī)模達(dá)到上限(該上限即游標(biāo)域集合的最大規(guī)模,用max_count表示),則不能再添加新的游標(biāo)域,而是選擇上界游標(biāo)域或者前驅(qū)游標(biāo)域進(jìn)行擴(kuò)大。特別的,如果上界游標(biāo)域是最大游標(biāo)域,則只能對其前驅(qū)游標(biāo)域進(jìn)行擴(kuò)大。即在msgid-pre_beginid<upper_endid-msgid,并且msgid-pre_beginid<max_range_size的情況下,將前驅(qū)游標(biāo)域擴(kuò)大為[pre_beginid,msgid+1),如圖3所示。圖3為在復(fù)活消息msgid時(shí)對消息msgid的前驅(qū)游標(biāo)域進(jìn)行擴(kuò)大的示意圖,圖3中,pb表示pre_beginid,pe表示pre_endid,ub表示upper_beginid,ue表示upper_endid。其中,max_count表示游標(biāo)域集合中最多可以包含的游標(biāo)域的總數(shù)目。

在步驟f中,如果游標(biāo)域[pre_beginid,msgid+1)和游標(biāo)域[msgid,upper_endid)的范圍相同且都不超過max_range_size,可以隨機(jī)選擇游標(biāo)域[pre_beginid,msgid+1)來替換前驅(qū)游標(biāo)域或者選擇[msgid,upper_endid)來替換上界游標(biāo)域,也可以默認(rèn)選擇游標(biāo)域[pre_beginid,msgid+1)來替換前驅(qū)游標(biāo)域。

這里舉例說明。以下例1至例4假設(shè)max_range_size為100,max_count為10。

例1、假設(shè)當(dāng)前游標(biāo)域集合為{[5,101)},復(fù)活的消息編號為6。消息6存在上界游標(biāo)域[5,101),并且消息6包含在上界游標(biāo)域[5,101)中,此時(shí)不再調(diào)整游標(biāo)域集合,則消息6復(fù)活后,游標(biāo)域集合仍然為{[5,101)}。

例2、假設(shè)當(dāng)前游標(biāo)域集合為{[11,101)},復(fù)活的消息編號為6。消息6存在上界游標(biāo)域[11,101)且上界游標(biāo)域[11,101)的左端點(diǎn)消息編號11大于6,不存在前驅(qū)游標(biāo)域,此時(shí)將游標(biāo)域[6,7)添加到游標(biāo)域集合中,則消息6復(fù)活后,游標(biāo)域集合為{[6,7),[11,101)}。

例3、假設(shè)當(dāng)前游標(biāo)域集合為{[3,6),[11,101)},復(fù)活的消息編號為6。消息6存在上界游標(biāo)域[11,101)和前驅(qū)游標(biāo)域[3,6)。游標(biāo)域[3,7)和游標(biāo)域[6,101)中范圍較小且不超過max_range_size的游標(biāo)域?yàn)閇3,7),此時(shí)將游標(biāo)域[3,7)添加到游標(biāo)域集合替換游標(biāo)域[3,6),則消息6復(fù)活后,游標(biāo)域集合為{[3,7),[11,101)}。

例4、假設(shè)當(dāng)前游標(biāo)域集合為{[1,101),[106,206)},復(fù)活的消息編號為103。消息103存在上界游標(biāo)域[106,206)和前驅(qū)游標(biāo)域[1,101)。但游標(biāo)域[1,104)和游標(biāo)域[103,206)的范圍都超過了max_range_size(上述假設(shè)max_range_size為100),此時(shí)將游標(biāo)域[3,7)添加到游標(biāo)域集合,則消息103復(fù)活后,游標(biāo)域集合為{[1,101),[103,104),[106,206)}。

也就是說,在消息隊(duì)列中的消息消費(fèi)失敗的情況下,擴(kuò)大編號范圍,使消費(fèi)失敗的消息的編號包括在該編號范圍之內(nèi),可以包括下面四種情況之一:

一,假設(shè)復(fù)活的消息編號為msgid,在當(dāng)前游標(biāo)域集合中存在消息msgid的上界游標(biāo)域,且msgid包含在所述上界游標(biāo)域的情況下,維持當(dāng)前游標(biāo)域集合不變。

二,假設(shè)復(fù)活的消息編號為msgid,在當(dāng)前游標(biāo)域集合中存在消息msgid的上界游標(biāo)域、不存在消息msgid的前驅(qū)游標(biāo)域,且所述上界游標(biāo)域的開頭消息編號大于msgid的情況下,將游標(biāo)域[msgid,msgid+1)添加到當(dāng)前游標(biāo)域集合中。

三,假設(shè)復(fù)活的消息編號為msgid,在當(dāng)前游標(biāo)域集合中存在消息msgid的上界游標(biāo)域[ub,ue)和前驅(qū)游標(biāo)域[pb,pe),擴(kuò)展前驅(qū)游標(biāo)域 [pb,msgid+1)和擴(kuò)展上界游標(biāo)域[msgid,ue)兩者之一或全部小于預(yù)設(shè)的第二閾值的情況下,選擇兩者之中范圍小的游標(biāo)域替換相應(yīng)的原游標(biāo)域;在當(dāng)前游標(biāo)域集合的規(guī)模達(dá)到上限并且上界游標(biāo)域[ub,ue)是當(dāng)前游標(biāo)域集合中最大游標(biāo)域的情況下,選擇擴(kuò)展前驅(qū)游標(biāo)域[pb,msgid+1)替換前驅(qū)游標(biāo)域[pb,pe)。

四,假設(shè)復(fù)活的消息編號為msgid,在當(dāng)前游標(biāo)域集合中存在消息msgid的上界游標(biāo)域[ub,ue)和前驅(qū)游標(biāo)域[pb,pe),擴(kuò)展前驅(qū)游標(biāo)域[pb,msgid+1)和擴(kuò)展上界游標(biāo)域[msgid,ue全部大于預(yù)設(shè)的第二閾值的情況下,將游標(biāo)域[msgid,msgid+1)添加到當(dāng)前游標(biāo)域集合中。

在本發(fā)明實(shí)施例中,根據(jù)消息隊(duì)列中消息的狀態(tài)變化情況調(diào)整編號范圍和管理消息可以包括:在客戶端成功消費(fèi)消息的情況下,在消息隊(duì)列將消費(fèi)成功的消息刪除。此處的刪除是指將消息從存儲消息隊(duì)列的磁盤中刪除,也即從消息隊(duì)列中刪除。

在本發(fā)明實(shí)施例中,根據(jù)消息隊(duì)列中消息的狀態(tài)變化情況調(diào)整編號范圍和管理消息還可以包括:在從消息隊(duì)列預(yù)讀消息到緩存之后,該編號范圍中的非最大編號區(qū)間對應(yīng)的全部可消費(fèi)消息都已被預(yù)讀的情況下,從該編號范圍中刪除該非最大編號區(qū)間。

刪除這樣的非最大編號區(qū)間后,編號范圍中編號區(qū)間的數(shù)目減少了,對編號區(qū)間的搜索次數(shù)就減少了,因此能夠縮短查詢編號范圍的時(shí)間,進(jìn)一步提高消息的預(yù)讀速度。

為了進(jìn)一步對編號范圍進(jìn)行管理,可以為編號范圍設(shè)置版本號及版本號更新規(guī)則。例如,設(shè)置編號范圍的初始版本號為1;每次修改編號范圍,編號范圍的版本號加1;如果修改編號范圍時(shí)需要修改編號區(qū)間,則將修改后的編號范圍的版本號作為編號區(qū)間的版本號。在刪除編號區(qū)間時(shí)需要保證編號區(qū)間未被修改,即編號區(qū)間的版本號沒有變化,否則不能刪除。

本發(fā)明實(shí)施例的消息管理方法,通過編號范圍來管理消息隊(duì)列中可消費(fèi)消息的編號,并且保證了消息的先進(jìn)先出特性,在需要預(yù)讀批量消息到緩存時(shí),可以根據(jù)編號范圍快速查詢到消息隊(duì)列中編號最小的設(shè)定數(shù)目個(gè)可消費(fèi)消息的編號,在保證消息先進(jìn)先出特性的前提下提高了消息預(yù)讀速度,提升了消息系統(tǒng)性能。

本發(fā)明還提出了一種消息管理裝置,用以實(shí)施上述的消息管理方法。上述消息管理方法實(shí)施例中的原理說明,也同樣適用于下面的消息管理裝置各實(shí)施例。

圖4為本發(fā)明實(shí)施例二中消息管理裝置的結(jié)構(gòu)框圖。如圖4所示,本實(shí)施例中,消息管理裝置400可以包括記錄模塊410和調(diào)整模塊420。其中,記錄模塊410用于按照消息編號的順序在內(nèi)存中記錄消息隊(duì)列中可消費(fèi)消息的編號范圍。調(diào)整模塊420用于根據(jù)消息隊(duì)列中消息的狀態(tài)變化情況調(diào)整記錄模塊410記錄的編號范圍和管理消息。

其中,編號范圍可以包括至少一個(gè)編號區(qū)間,且任意兩個(gè)編號區(qū)間不重疊。

由于可消費(fèi)消息的編號范圍是按照消息編號的順序記錄的,因此可以保證消息的先進(jìn)先出特性??上M(fèi)消息的編號范圍可以作為查詢要預(yù)讀的批量消息的依據(jù)。通過可消費(fèi)消息的編號范圍不僅可以快速查找到要預(yù)讀到緩存的批量消息,而且保證了消息的先進(jìn)先出特性。

其中,編號范圍中的各編號區(qū)間可以按照區(qū)間右端點(diǎn)消息編號從小到大的順序排列。

在本發(fā)明實(shí)施例中,調(diào)整模塊420可以包括縮小單元??s小單元用于在從緩存中取出消息隊(duì)列中被預(yù)讀到緩存的消息供客戶端消費(fèi)之后,縮小該編號范圍,將取出的消息的編號排除在該編號范圍之外,且在消息隊(duì)列中將所述取出的消息標(biāo)記為不可消費(fèi)消息。

在本發(fā)明實(shí)施例中,調(diào)整模塊420可以包括擴(kuò)大單元。擴(kuò)大單元用于在客戶端超時(shí)未返回消費(fèi)結(jié)果的情況下,擴(kuò)大編號范圍,使超時(shí)未返回消費(fèi)結(jié)果的消息的編號包括在該編號范圍之內(nèi),且在所述消息隊(duì)列中將所述超時(shí)未返回消費(fèi)結(jié)果的消息標(biāo)記為可消費(fèi)消息。

在本發(fā)明實(shí)施例中,調(diào)整模塊420可以包括消息刪除單元。消息刪除單元用于在客戶端成功消費(fèi)消息的情況下,在消息隊(duì)列將消費(fèi)成功的消息刪除。

在本發(fā)明實(shí)施例中,調(diào)整模塊420可以包括區(qū)間刪除單元。刪除單元用于在從消息隊(duì)列預(yù)讀消息到緩存之后,編號范圍中的非最大編號區(qū)間對應(yīng)的全部可消費(fèi)消息都已被預(yù)讀的情況下,從編號范圍中刪除該非最大編 號區(qū)間。

本發(fā)明實(shí)施例的消息管理裝置,通過編號范圍來管理消息隊(duì)列中可消費(fèi)消息的編號,并且保證了消息的先進(jìn)先出特性,在需要預(yù)讀批量消息到緩存時(shí),可以根據(jù)編號范圍快速查詢到消息隊(duì)列中編號最小的設(shè)定數(shù)目個(gè)可消費(fèi)消息的編號,在保證消息先進(jìn)先出特性的前提下提高了消息預(yù)讀速度,提升了消息系統(tǒng)性能。

圖5為本發(fā)明實(shí)施例三中消息預(yù)讀方法的流程圖。如圖5所示,本實(shí)施例中,消息預(yù)讀方法可以包括如下步驟:

步驟s501,查詢內(nèi)存中記錄的消息隊(duì)列中可消費(fèi)消息的編號范圍,確定消息隊(duì)列中編號最小的n個(gè)可消費(fèi)消息的編號,n為自然數(shù);

其中,編號范圍可以包括至少一個(gè)編號區(qū)間,且任意兩個(gè)編號區(qū)間不重疊。

其中,本步驟中的可消費(fèi)消息的編號范圍與前述消息管理方法中的編號范圍是相同的。

可消費(fèi)消息的編號范圍可以作為查詢要預(yù)讀的批量消息的依據(jù)。通過可消費(fèi)消息的編號范圍不僅可以快速查找到要預(yù)讀到緩存的批量消息,而且保證了消息的先進(jìn)先出特性。

在本發(fā)明實(shí)施例中,所述的編號范圍可以包括至少一個(gè)編號區(qū)間,該編號范圍中的各編號區(qū)間可以按照區(qū)間右端點(diǎn)消息編號從小到大的順序排列,且該編號范圍中的任意兩個(gè)編號區(qū)間不重疊。本文中,將這樣的編號范圍稱為游標(biāo)域集合,將這樣的編號范圍中的編號區(qū)間稱為游標(biāo)域。游標(biāo)域用左閉右開區(qū)間表示。

步驟s502,根據(jù)確定的n個(gè)可消費(fèi)消息的編號從消息隊(duì)列中預(yù)讀相應(yīng)的消息到緩存。

該n個(gè)可消費(fèi)消息是消息隊(duì)列中編號最小的n個(gè)可消費(fèi)消息,保證了消息的先進(jìn)先出特性。

下面通過兩個(gè)具體示例來對本發(fā)明的消息預(yù)讀方法作進(jìn)一步說明。

示例一

假設(shè)內(nèi)存中按照消息編號的順序記錄的消息隊(duì)列中可消費(fèi)消息的編號范圍為{[6,9),[11,101)},該編號范圍內(nèi)的所有消息都不是標(biāo)識為已 刪除的消息。則從消息隊(duì)列預(yù)讀5個(gè)可消費(fèi)消息到緩存的過程是:查詢編號范圍{[6,9),[11,101)},確定編號最小的5個(gè)可消費(fèi)消息的編號為6、7、8、11、12;從消息隊(duì)列中消息6、消息7、消息8、消息11、消息12到緩存。

這里說明一下,標(biāo)識為已刪除的消息是已經(jīng)被消費(fèi)成功的消息,這樣的消息不屬于可消費(fèi)消息,但是這些消息的編號可能被包括在可消費(fèi)消息的編號范圍之內(nèi)。這就需要在根據(jù)編號范圍確定預(yù)讀消息編號的時(shí)候,將這些標(biāo)識為已刪除的消息的編號排除掉。此種情況請參見如下的示例二。

示例二

仍然假設(shè)內(nèi)存中按照消息編號的順序記錄的消息隊(duì)列中可消費(fèi)消息的編號范圍為{[6,9),[11,101)},該編號范圍內(nèi)的消息7是標(biāo)識為已刪除的消息。則從消息隊(duì)列預(yù)讀5個(gè)可消費(fèi)消息到緩存的過程是:查詢編號范圍{[6,9),[11,101)},確定編號最小的5個(gè)可消費(fèi)消息的編號為6、8、11、12、13(由于消息7是標(biāo)識為已刪除的消息,編號7被排除掉了);從消息隊(duì)列中消息6、消息8、消息11、消息12、消息13到緩存。

本發(fā)明實(shí)施例的消息預(yù)讀方法,能夠根據(jù)內(nèi)存中記錄的消息隊(duì)列中可消費(fèi)消息的編號范圍快速查詢到消息隊(duì)列中編號最小的設(shè)定數(shù)目個(gè)可消費(fèi)消息的編號,并且還保證了消息的先進(jìn)先出特性,提高了消息預(yù)讀速度,提升了消息系統(tǒng)性能。

本發(fā)明還提出了一種消息預(yù)讀裝置,用以實(shí)施上述的消息預(yù)讀方法。上述消息預(yù)讀方法實(shí)施例中的原理說明,也同樣適用于下面的消息預(yù)讀裝置各實(shí)施例。

圖6為本發(fā)明實(shí)施例四中消息預(yù)讀裝置的結(jié)構(gòu)框圖。如圖6所示,本實(shí)施例中,消息預(yù)讀裝置600可以包括查詢模塊610和預(yù)讀模塊620。其中可,查詢模塊610用于查詢內(nèi)存中記錄的消息隊(duì)列中可消費(fèi)消息的編號范圍,確定消息隊(duì)列中編號最小的n個(gè)可消費(fèi)消息的編號,n為自然數(shù)。預(yù)讀模塊620用于根據(jù)查詢模塊610確定的n個(gè)可消費(fèi)消息的編號從消息隊(duì)列中預(yù)讀相應(yīng)的消息到緩存。

其中,可消費(fèi)消息的編號范圍與前述消息管理方法中的編號范圍是相同的。

其中,編號范圍可以包括至少一個(gè)編號區(qū)間,且任意兩個(gè)編號區(qū)間不重疊。

由于可消費(fèi)消息的編號范圍是按照消息編號的順序記錄的,因此可以保證消息的先進(jìn)先出特性??上M(fèi)消息的編號范圍可以作為查詢要預(yù)讀的批量消息的依據(jù)。通過可消費(fèi)消息的編號范圍不僅可以快速查找到要預(yù)讀到緩存的批量消息,而且保證了消息的先進(jìn)先出特性。

在本發(fā)明實(shí)施例中,所述的編號范圍可以包括至少一個(gè)編號區(qū)間,該編號范圍中的各編號區(qū)間按照區(qū)間右端點(diǎn)消息編號從小到大的順序排列,且該編號范圍中的任意兩個(gè)編號區(qū)間不重疊。本文中,將這樣的編號范圍稱為游標(biāo)域集合,將這樣的編號范圍中的編號區(qū)間稱為游標(biāo)域。游標(biāo)域用左閉右開區(qū)間表示。

本發(fā)明實(shí)施例的消息預(yù)讀裝置,能夠根據(jù)內(nèi)存中記錄的消息隊(duì)列中可消費(fèi)消息的編號范圍快速查詢到消息隊(duì)列中編號最小的設(shè)定數(shù)目個(gè)可消費(fèi)消息的編號,并且還保證了消息的先進(jìn)先出特性,提高了消息預(yù)讀速度,提升了消息系統(tǒng)性能。

圖7為本發(fā)明實(shí)施例五中消息管理設(shè)備的結(jié)構(gòu)框圖。如圖7所示,本實(shí)施例中,消息管理設(shè)備700可以包括消息管理裝置400。該消息管理裝置400可以是前述消息管理裝置實(shí)施例中的任意一種消息管理裝置。

其中,消息管理裝置400可以用于按照消息編號的順序在內(nèi)存中記錄消息隊(duì)列中可消費(fèi)消息的編號范圍,編號范圍包括至少一個(gè)編號區(qū)間,且任意兩個(gè)編號區(qū)間不重疊;以及,根據(jù)消息隊(duì)列中消息的狀態(tài)變化情況調(diào)整編號范圍和管理消息。

本發(fā)明實(shí)施例的消息管理設(shè)備,通過編號范圍來管理消息隊(duì)列中可消費(fèi)消息的編號,并且保證了消息的先進(jìn)先出特性,在需要預(yù)讀批量消息到緩存時(shí),可以根據(jù)編號范圍快速查詢到消息隊(duì)列中編號最小的設(shè)定數(shù)目個(gè)可消費(fèi)消息的編號,在保證消息先進(jìn)先出特性的前提下提高了消息預(yù)讀速度,提升了消息系統(tǒng)性能。

圖8為本發(fā)明實(shí)施例六中消息預(yù)讀設(shè)備的結(jié)構(gòu)框圖。如圖8所示,本實(shí)施例中,消息預(yù)讀設(shè)備800可以包括消息預(yù)讀裝置600。該消息預(yù)讀裝置600可以是前述消息預(yù)讀裝置實(shí)施例中的任意一種消息預(yù)讀裝置。

其中,消息預(yù)讀裝置600可以用于查詢內(nèi)存中記錄的消息隊(duì)列中可消費(fèi)消息的編號范圍,確定消息隊(duì)列中編號最小的n個(gè)可消費(fèi)消息的編號,n為自然數(shù);根據(jù)確定的n個(gè)可消費(fèi)消息的編號從消息隊(duì)列中預(yù)讀相應(yīng)的消息到緩存。其中,編號范圍可以包括至少一個(gè)編號區(qū)間,且任意兩個(gè)編號區(qū)間不重疊。

本發(fā)明實(shí)施例的消息預(yù)讀設(shè)備,能夠根據(jù)內(nèi)存中記錄的消息隊(duì)列中可消費(fèi)消息的編號范圍快速查詢到消息隊(duì)列中編號最小的設(shè)定數(shù)目個(gè)可消費(fèi)消息的編號,并且還保證了消息的先進(jìn)先出特性,提高了消息預(yù)讀速度,提升了消息系統(tǒng)性能。

圖9為本發(fā)明實(shí)施例七中設(shè)備900的結(jié)構(gòu)框圖。如圖9所示,本實(shí)施例中,設(shè)備900可以是移動(dòng)電話,計(jì)算機(jī),數(shù)字廣播終端,消息收發(fā)設(shè)備,游戲控制臺,平板設(shè)備,醫(yī)療設(shè)備,健身設(shè)備,個(gè)人數(shù)字助理等。

參照圖9,設(shè)備900可以包括以下一個(gè)或多個(gè)組件:處理組件902,存儲器904,電源組件906,多媒體組件908,音頻組件910,輸入/輸出(i/o)的接口912,傳感器組件914,以及通信組件916。

處理組件902通常控制設(shè)備900的整體操作,諸如與顯示,電話呼叫,數(shù)據(jù)通信,相機(jī)操作和記錄操作相關(guān)聯(lián)的操作。處理元件902可以包括一個(gè)或多個(gè)處理器920來執(zhí)行指令,以完成上述的方法的全部或部分步驟,具體包括:在內(nèi)存中記錄消息隊(duì)列中可消費(fèi)消息的編號范圍;根據(jù)所述消息隊(duì)列中消息的狀態(tài)變化情況調(diào)整所述編號范圍和管理消息;查詢內(nèi)存中記錄的消息隊(duì)列中可消費(fèi)消息的編號范圍,確定所述消息隊(duì)列中編號最小的n個(gè)可消費(fèi)消息的編號,n為自然數(shù);根據(jù)確定的所述n個(gè)可消費(fèi)消息的編號從所述消息隊(duì)列中預(yù)讀相應(yīng)的消息到緩存。

此外,處理組件902可以包括一個(gè)或多個(gè)模塊,便于處理組件902和其他組件之間的交互。例如,處理組件902可以包括多媒體模塊,以方便多媒體組件908和處理組件902之間的交互。

存儲器904被配置為存儲各種類型的數(shù)據(jù)以支持在設(shè)備900的操作。這些數(shù)據(jù)的示例包括用于在設(shè)備900上操作的任何應(yīng)用程序或方法的指令,聯(lián)系人數(shù)據(jù),電話簿數(shù)據(jù),消息,圖片,視頻等。存儲器904可以由任何類型的易失性或非易失性存儲設(shè)備或者它們的組合實(shí)現(xiàn),如靜態(tài)隨機(jī) 存取存儲器(sram),電可擦除可編程只讀存儲器(eeprom),可擦除可編程只讀存儲器(eprom),可編程只讀存儲器(prom),只讀存儲器(rom),磁存儲器,快閃存儲器,磁盤或光盤。

電源組件906為設(shè)備900的各種組件提供電力。電源組件906可以包括電源管理系統(tǒng),一個(gè)或多個(gè)電源,及其他與為設(shè)備900生成、管理和分配電力相關(guān)聯(lián)的組件。

多媒體組件908包括在所述設(shè)備900和用戶之間的提供一個(gè)輸出接口的屏幕。在一些實(shí)施例中,屏幕可以包括液晶顯示器(lcd)和觸摸面板(tp)。如果屏幕包括觸摸面板,屏幕可以被實(shí)現(xiàn)為觸摸屏,以接收來自用戶的輸入信號。觸摸面板包括一個(gè)或多個(gè)觸摸傳感器以感測觸摸、滑動(dòng)和觸摸面板上的手勢。所述觸摸傳感器可以不僅感測觸摸或滑動(dòng)動(dòng)作的邊界,而且還檢測與所述觸摸或滑動(dòng)操作相關(guān)的持續(xù)時(shí)間和壓力。在一些實(shí)施例中,多媒體組件908包括一個(gè)前置攝像頭和/或后置攝像頭。當(dāng)設(shè)備900處于操作模式,如拍攝模式或視頻模式時(shí),前置攝像頭和/或后置攝像頭可以接收外部的多媒體數(shù)據(jù)。每個(gè)前置攝像頭和后置攝像頭可以是一個(gè)固定的光學(xué)透鏡系統(tǒng)或具有焦距和光學(xué)變焦能力。

音頻組件910被配置為輸出和/或輸入音頻信號。例如,音頻組件910包括一個(gè)麥克風(fēng)(mic),當(dāng)設(shè)備900處于操作模式,如呼叫模式、記錄模式和語音識別模式時(shí),麥克風(fēng)被配置為接收外部音頻信號。所接收的音頻信號可以被進(jìn)一步存儲在存儲器904或經(jīng)由通信組件916發(fā)送。在一些實(shí)施例中,音頻組件910還包括一個(gè)揚(yáng)聲器,用于輸出音頻信號。

i/o接口912為處理組件902和外圍接口模塊之間提供接口,上述外圍接口模塊可以是鍵盤,點(diǎn)擊輪,按鈕等。這些按鈕可包括但不限于:主頁按鈕、音量按鈕、啟動(dòng)按鈕和鎖定按鈕。

傳感器組件914包括一個(gè)或多個(gè)傳感器,用于為設(shè)備900提供各個(gè)方面的狀態(tài)評估。例如,傳感器組件914可以檢測到設(shè)備900的打開/關(guān)閉狀態(tài),組件的相對定位,例如所述組件為設(shè)備900的顯示器和小鍵盤,傳感器組件914還可以檢測設(shè)備900或設(shè)備900一個(gè)組件的位置改變,用戶與設(shè)備900接觸的存在或不存在,設(shè)備900方位或加速/減速和設(shè)備900的溫度變化。傳感器組件914可以包括接近傳感器,被配置用來在沒有任何的 物理接觸時(shí)檢測附近物體的存在。傳感器組件914還可以包括光傳感器,如cmos或ccd圖像傳感器,用于在成像應(yīng)用中使用。在一些實(shí)施例中,該傳感器組件914還可以包括加速度傳感器,陀螺儀傳感器,磁傳感器,壓力傳感器或溫度傳感器。

通信組件916被配置為便于設(shè)備900和其他設(shè)備之間有線或無線方式的通信。設(shè)備900可以接入基于通信標(biāo)準(zhǔn)的無線網(wǎng)絡(luò),如wifi,2g或3g,或它們的組合。在一個(gè)示例性實(shí)施例中,通信組件916經(jīng)由廣播信道接收來自外部廣播管理系統(tǒng)的廣播信號或廣播相關(guān)信息。在一個(gè)示例性實(shí)施例中,所述通信組件916還包括近場通信(nfc)模塊,以促進(jìn)短程通信。例如,在nfc模塊可基于射頻識別(rfid)技術(shù),紅外數(shù)據(jù)協(xié)會(irda)技術(shù),超寬帶(uwb)技術(shù),藍(lán)牙(bt)技術(shù)和其他技術(shù)來實(shí)現(xiàn)。

在示例性實(shí)施例中,設(shè)備900可以被一個(gè)或多個(gè)應(yīng)用專用集成電路(asic)、數(shù)字信號處理器(dsp)、數(shù)字信號處理設(shè)備(dspd)、可編程邏輯器件(pld)、現(xiàn)場可編程門陣列(fpga)、控制器、微控制器、微處理器或其他電子元件實(shí)現(xiàn),用于執(zhí)行上述方法。

在示例性實(shí)施例中,還提供了一種包括指令的非臨時(shí)性計(jì)算機(jī)可讀存儲介質(zhì),例如包括指令的存儲器904,上述指令可由設(shè)備900的處理器920執(zhí)行以完成上述方法。例如,所述非臨時(shí)性計(jì)算機(jī)可讀存儲介質(zhì)可以是rom、隨機(jī)存取存儲器(ram)、cd-rom、磁帶、軟盤和光數(shù)據(jù)存儲設(shè)備等。

本發(fā)明實(shí)施例還提供了一種非臨時(shí)性計(jì)算機(jī)可讀存儲介質(zhì),當(dāng)所述存儲介質(zhì)中的指令由移動(dòng)終端的處理器執(zhí)行時(shí),使得移動(dòng)終端能夠執(zhí)行一種方法,所述方法包括:在內(nèi)存中記錄消息隊(duì)列中可消費(fèi)消息的編號范圍;根據(jù)所述消息隊(duì)列中消息的狀態(tài)變化情況調(diào)整所述編號范圍;查詢內(nèi)存中記錄的消息隊(duì)列中可消費(fèi)消息的編號范圍,確定所述消息隊(duì)列中編號最小的n個(gè)可消費(fèi)消息的編號,n為自然數(shù);根據(jù)確定的所述n個(gè)可消費(fèi)消息的編號從所述消息隊(duì)列中預(yù)讀相應(yīng)的消息到緩存。

以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1