專利名稱:處理代理的消息的裝置和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及處理大量代理(agent)的消息的一種消息處理裝置、消息處理方法及消息處理程序。
背景技術(shù):
近幾年來,出現(xiàn)了對在短時間內(nèi)處理大量代理的系統(tǒng)的需求。例子包括這樣一種系統(tǒng),該系統(tǒng)將與火車站或類似地點的用戶的各自需求匹配的信息提供給為用戶準(zhǔn)備的各自的代理。在這項服務(wù)中,當(dāng)一個事先注冊的用戶通過車站的自動檢票口時,根據(jù)該用戶的需求檢索有關(guān)車站近區(qū)的信息并將其傳送至用戶的移動終端或者類似裝置。在這項服務(wù)中,通過鐵路線上所有車站的自動檢票口的用戶可成為對象。隨著在同一時間內(nèi)通過自動檢票口的用戶數(shù)的增加,就產(chǎn)生了在短時間內(nèi)處理大量代理的消息的需要。
根據(jù)日本專利公開No.2004-192047,為了有效地處理大量代理的消息,擁有一個高優(yōu)先級別的消息的代理將比其它代理優(yōu)先被處理。更進(jìn)一步地,為用戶準(zhǔn)備的相應(yīng)代理也根據(jù)與用戶匹配的優(yōu)先級別被區(qū)分及處理。而且,對于在一數(shù)據(jù)庫中管理的代理,代理被緩存在一系統(tǒng)存儲器中以便減少數(shù)據(jù)庫上的訪問負(fù)載。當(dāng)每個代理的、存儲在一消息隊列中的全部消息已經(jīng)被處理之后,或者當(dāng)超過了被連續(xù)處理的消息的數(shù)量上限之后,開始處理下一個代理。這樣,對數(shù)據(jù)庫的訪問被最小化。就是說,根據(jù)代理及信息的優(yōu)先級來處理消息,其方式為存在于高速緩沖存儲器中的代理被給予高優(yōu)先級且一個代理的消息被連續(xù)處理,由此,試圖減少訪問數(shù)據(jù)庫的次數(shù)并加速對消息處理的速度。
在上面所述的日本專利公開No.2004-192047的技術(shù)中,擁有高優(yōu)先級消息的代理被優(yōu)先處理。然而,在消息處理過程中,為了減少訪問數(shù)據(jù)庫的次數(shù),對于一個代理,不僅處于高優(yōu)先級的消息而且處于低優(yōu)先級的消息都被連續(xù)處理。因此,僅當(dāng)處于低優(yōu)先級的消息被處理之后,下一個代理的處于高優(yōu)先級的消息才被處理。如果有大量代理同時擁有處于高優(yōu)先級的消息和處于低優(yōu)先級的消息,則為每個代理處理處于高優(yōu)先級的消息及處于低優(yōu)先級的消息。因此,因為處于低優(yōu)先級的消息處理的妨礙,較后處理的代理的處于高優(yōu)先級的消息的處理將被明顯延遲。
例如,在車站近區(qū)信息傳送服務(wù)中,延遲問題被提出。車站近區(qū)信息傳送服務(wù)是指這樣一種服務(wù),其中當(dāng)一張長期車票被插入自動檢票口時,有關(guān)車站近區(qū)的與用戶事先注冊的信息類別相匹配的廣告信息或交通信息被從一代理傳送至用戶的移動電話或類似裝置。當(dāng)提供這樣一種服務(wù)時,存在著對于時間、地點以及需求信息的限制,例如這樣的限制廣告信息或交通信息必須在這樣的時間段內(nèi)到達(dá)其目地的,在該時間段內(nèi)用戶從車站的移動距離很??;而且信息的內(nèi)容必須與關(guān)于每個用戶的需求信息或類似信息相一致。該服務(wù)必須被提供給許多滿足以上條件的用戶。對每個用戶,存在執(zhí)行這些過程的一個代理,而且它執(zhí)行用于注冊將被傳送給用戶的新的廣告信息以及傳送信息的過程。更進(jìn)一步地,在注冊廣告時,需要根據(jù)與每個用戶有關(guān)的訂閱信息來過濾廣告。然而,當(dāng)通過自動檢票口時,需要避免每次都為每個用戶搜索及定制數(shù)據(jù)庫這一繁重的過程。因此,每個用戶具有要被傳送的廣告信息或類似信息。更進(jìn)一步地,在這種服務(wù)中,對于當(dāng)用戶通過自動檢票口時執(zhí)行的信息傳送過程,需要高速度,但是,對于諸如為每個用戶注冊廣告信息的過程就不需要如此高的速度。
而且,類似的延遲問題也可能在這樣或相似的服務(wù)中發(fā)生其中,使用配置在用戶的移動電話中的GPS或類似裝置來獲得用戶的位置信息;而且,其中,根據(jù)用戶的時間、地點以及需求,以一種精確定位的方式,將信息傳送至移動電話以響應(yīng)來自用戶的請求。就是說,在一個擁擠的購物商場或旅游景點,除了用于注冊及傳送購物廣告信息的過程,還可以存在用于注冊及傳送有關(guān)飯店或咖啡廳的座位可用性信息以響應(yīng)來自用戶的請求的過程。在這種情況下,用于傳送信息給用戶的過程就需要在這樣的一個時間段內(nèi)完成,在該時間段內(nèi),用戶未從請求所述信息的地方離開太遠(yuǎn),并且該過程需要高速度。另一方面,在注冊的過程中,有關(guān)飯店或咖啡廳的座位可用性信息相對需要高速度。然而,用來注冊有關(guān)下一個月開始的銷售的廣告信息是不需要高速度的。
然而,在采用上述日本專利公開NO.2004-192047的技術(shù)情況下,當(dāng)注冊與大范圍的用戶種類相匹配的廣告信息時,會產(chǎn)生長時間的延遲。下面將給出集中于車站近區(qū)信息傳送服務(wù)的描述。然而,這是一示例,而并非旨在將本發(fā)明的應(yīng)用范圍限制到車站近區(qū)信息傳送服務(wù)。
就是說,在車站近區(qū)信息傳送服務(wù)中,當(dāng)用戶通過自動檢票口時,執(zhí)行信息傳送過程之后,代理隨后執(zhí)行一廣告注冊過程??紤]到眾多的自動檢票口在鐵路線的所有車站工作,可以認(rèn)為許多用戶幾乎同時通過自動檢票口。在一些情況下,由于其他用戶的代理執(zhí)行的廣告注冊程序,隨后處理的來自一用戶的代理的信息傳送可能被明顯地延遲。
假設(shè)在這個車站近區(qū)信息傳送服務(wù)中在夜晚高峰時間傳送一廣告,對下面的特定情況進(jìn)行簡單的計算*通過假設(shè)每個車站的自動檢票口的平均數(shù)量為10個以及車站數(shù)量為50個,而假設(shè)自動檢票口的數(shù)量為500個,并且假設(shè)本服務(wù)的用戶為用戶總數(shù)的10%。
*假設(shè)用于代理的高速緩沖存儲器容量為代理總數(shù)的50%。
*假設(shè)由于處于高峰期,所有的自動檢票口均為滿負(fù)荷工作。
*假設(shè)當(dāng)一個用戶進(jìn)入自動檢票口時,該用戶在1秒內(nèi)通過,而且下一個用戶立即開始進(jìn)入。
*假設(shè)針對25個車站(占車站總數(shù)的一半)中的每一個注冊了一個廣告,而且所有用戶中的半數(shù)已成為將傳送已注冊廣告的對象。
*對于滿負(fù)荷工作的系統(tǒng)中用于處理一個代理所需要的時間,在多個代理在同一時間被并行處理的情況下,對于相關(guān)于通過自動檢票口的代理,當(dāng)該代理存在于高速緩存中時,假設(shè)其CPU時間為18毫秒;對于相關(guān)于通過自動檢票口的代理,當(dāng)該代理沒有存在于高速緩存中時,假設(shè)其CPU時間為21毫秒;以及對于相關(guān)于廣告信息注冊的代理,當(dāng)該代理存在于高速緩存中時,假設(shè)其CPU時間為20毫秒。
*代理處理模式有以下4種A)代理存在于高速緩存中,并且為廣告注冊過程的對象B)代理存在于高速緩存中,并且不是廣告注冊過程的對象C)代理不存在于高速緩存中,并且為廣告注冊過程的對象D)代理不存在于高速緩存中,并且不是廣告注冊過程的對象由于高速緩存的容量為代理總數(shù)的50%,并且成為廣告注冊過程的對象的代理是代理總數(shù)的一半,所以每個模式的代理的數(shù)量為一秒鐘內(nèi)被處理的代理數(shù)量(50個代理,因為每秒有500人通過自動檢票口,而其中的10%為成員)中的12.5。在這里,希望自動檢票口通過過程比廣告注冊過程優(yōu)先被處理。因此,指示通過自動檢票口的消息的優(yōu)先級被設(shè)定高于指示廣告注冊請求的消息的優(yōu)先級。一代理調(diào)度器選擇存在于高速緩存中的一代理,為之執(zhí)行自動檢票口通過過程,并隨后為該代理執(zhí)行廣告注冊過程。當(dāng)?shù)却甘就ㄟ^自動檢票口的消息的代理已經(jīng)從該高速緩存中消失后,將一未存在于高速緩存中的代理讀入高速緩存,執(zhí)行自動檢票口通過過程,并隨后為該代理執(zhí)行廣告注冊過程。
為完成存在于高速緩存中的所有代理的處理所需的時間為12.5×18ms+12.5×(18ms+20ms)=700ms,以及為完成未存在于高速緩存中的所有代理的處理所需的時間為12.5×21ms+12.5×(21ms+20ms)=775ms。
它們的和為1475毫秒,比1秒超出了475毫秒。當(dāng)超過一秒時,下一個用戶進(jìn)入自動檢票口,并因此指示通過自動檢票口的新消息一個接一個地到達(dá)系統(tǒng)。接下來,所述代理調(diào)度器再次處理存在于高速緩存中的代理。未在前面1秒內(nèi)被處理的代理(這些代理未存在于高速緩存中)的處理就被延遲。由于用戶一個接一個地通過自動檢票口,未能被處理的代理將積累起來。這就意味著廣告無法到達(dá)一些用戶。如上所述,在多種優(yōu)先級的消息混合在一起的情況下,就不能在合適的時間內(nèi)處理需要快速響應(yīng)的過程。
發(fā)明內(nèi)容
因此,本發(fā)明的目的是提供這樣一種消息處理裝置、一種消息處理方法以及一種消息處理程序,其可以處理大量代理的消息并且可以解決上述的問題。
為了解決上述問題,本發(fā)明提供了一種裝置,它包括存儲器;用于通過根據(jù)插入代理的消息確定該代理的優(yōu)先級別,來根據(jù)該代理是否存在于存儲器中以及是否存在消息,來管理該代理的狀態(tài)的裝置;用于則在檢測到該代理有最高的優(yōu)先級的情況下,如果該代理存在于存儲器中則給該代理分配一線程,以及如果該代理不存在于存儲器中,在調(diào)用該代理至存儲器之后為該代理分配一線程的裝置;以及用于重復(fù)消息處理直至滿足與被分配線程的代理相關(guān)的預(yù)定標(biāo)準(zhǔn)的消息處理裝置。擁有高優(yōu)先級消息的代理被分配一線程,而且該代理處理消息直至滿足所述預(yù)定標(biāo)準(zhǔn),由此高優(yōu)先級消息的處理被加速而訪問數(shù)據(jù)庫(盤)的次數(shù)被減少。
需要注意的是,上述本發(fā)明的概述并未列出本發(fā)明必須的全部特征,并且這些特征的組合也可以包括在本發(fā)明中。
為更完整地理解本發(fā)明及其優(yōu)點,現(xiàn)在結(jié)合附圖參考下面的描述。
圖1示出了一消息處理系統(tǒng)的示意圖;圖2示出了該消息處理系統(tǒng)的硬件配置的一個示例;圖3示出了該消息處理系統(tǒng)示意圖的一個示例;圖4示出了該消息處理系統(tǒng)的功能配置的一個示例;圖5示出了表示代理的狀態(tài)的變量值的示例;圖6示出了一種用來管理代理的優(yōu)先級別及其狀態(tài)的機(jī)制的一個示例;圖7示出了一控制塊(ControlBlock)的數(shù)據(jù)結(jié)構(gòu)的一個示例;圖8示出了代理的狀態(tài)轉(zhuǎn)換的一個示例;圖9示出了通過插入消息來更新代理的狀態(tài)的流程的一個示例;圖10為一操作流程,其示出了為代理分配線程的流程的一個示例;圖11示出了用于處理消息的流程的一個示例;圖12示出了用來管理代理的優(yōu)先級別及其狀態(tài)的機(jī)制的修改的示例的一個示例。
具體實施例方式
下文將通過本發(fā)明的一具體實施例來描述本發(fā)明。然而,以下實施例非旨在限制與權(quán)利要求的范圍相應(yīng)的本發(fā)明,且在實施例中描述的特征的所有組合對于解決本發(fā)明的方法并非不可缺少。
圖1示出了將本發(fā)明應(yīng)用到車站近區(qū)信息傳送服務(wù)的情況的示例。配置10給出了服務(wù)提供的略圖。網(wǎng)絡(luò)11為包括因特網(wǎng)、電話線及其它網(wǎng)絡(luò)的通訊網(wǎng)絡(luò)。根據(jù)本發(fā)明的消息處理系統(tǒng)12、用戶廣告信息數(shù)據(jù)庫13、車站自動檢票口14、信息接收終端15以及信息注冊終端16通過網(wǎng)絡(luò)11相互發(fā)送和接收數(shù)據(jù)及各種信息。被用戶通過車站自動檢票口14或其它事件所觸發(fā),消息處理系統(tǒng)12在用戶廣告信息數(shù)據(jù)庫13中檢測對每個用戶最優(yōu)化的廣告信息,并將檢測到的廣告信息作為被傳送信息傳送到相關(guān)的信息接收終端15。此外,信息注冊終端16用于注冊車站近區(qū)信息,如交通信息和廣告信息。該車站近區(qū)信息由消息處理系統(tǒng)12為每個用戶進(jìn)行選擇和編輯,并注冊到用戶廣告信息數(shù)據(jù)庫13中。
每個用戶預(yù)先注冊與該用戶自己喜好相關(guān)以及與該用戶特別感興趣的事情相關(guān)的關(guān)鍵詞。這些關(guān)鍵詞的例子包括“個人計算機(jī)及外圍設(shè)備”、“家具”、“鮮花”、“衣服”以及“附件”。另一方面,沿鐵路線的車站近區(qū)的商店注冊廣告信息。這些廣告信息根據(jù)每個用戶的關(guān)鍵詞進(jìn)行篩選,并為每個用戶注冊到用戶廣告信息數(shù)據(jù)庫13中。在注冊時,廣告信息也為每個用戶根據(jù)需要進(jìn)行定制。當(dāng)一個將“衣服”注冊為關(guān)鍵詞的用戶下火車并通過車站自動檢票口14時,就會將該信息發(fā)送給消息處理系統(tǒng)。當(dāng)用戶通過車站自動檢票口時,可以通過辨認(rèn)其上帶有ID的長期車票或類似物件將該用戶識別出來。如果有與用戶下車的車站相關(guān)的關(guān)于衣服的廣告信息,則該消息處理系統(tǒng)12根據(jù)事件信息把一消息插入到相關(guān)用戶的代理的隊列中。當(dāng)這一消息被代理處理后,用戶使用信息接收終端15接收該信息。信息接收終端15包括移動電話、PDA、以及筆記本個人計算機(jī),但并不限于此,只要該設(shè)備具有接收信息的功能即可。
此外,當(dāng)廣告者等從信息注冊終端16輸入廣告信息時,信息被發(fā)送到消息處理系統(tǒng)12。消息處理系統(tǒng)12根據(jù)事件信息將消息插入到用戶的代理隊列中。例如,如果該廣告信息是關(guān)于“附件”的,則該廣告信息將被注冊到用戶廣告信息數(shù)據(jù)庫13的這樣的用戶記錄中,其中詞“附件”被注冊為關(guān)鍵詞。處理該消息就是注冊為每個用戶定制的與附件相關(guān)的該廣告信息。此外,除了廣告信息,交通信息及其類似信息也被注冊到用戶廣告信息數(shù)據(jù)庫13中。
圖2是消息處理系統(tǒng)的硬件配置20的略圖。CPU 201,其為中央處理單元,在各種操作系統(tǒng)的控制下執(zhí)行不同程序。CPU 201通過總線202與存儲器203、盤204、顯示適配器205、用戶接口206、和網(wǎng)絡(luò)接口207互連。CPU 201通過用戶接口206連接到鍵盤209及鼠標(biāo)210,通過顯示適配器205連接到顯示器208,并通過網(wǎng)絡(luò)接口207連接到網(wǎng)絡(luò)。存儲器203包括主存儲器和高速緩沖存儲器。高速緩沖存儲器也用來緩存代理和消息。硬盤204用來注冊代理數(shù)據(jù)庫和訂閱表。這僅僅是計算機(jī)系統(tǒng)和總線安排的一個實施例的示例。本發(fā)明的特征可被用于多種系統(tǒng)配置,用于具有多個相同部件的實施例,以及用于分布在網(wǎng)絡(luò)上的實施例。
圖3示意地示出代理處理系統(tǒng)300;301為客戶機(jī),302為消息中介(broker),303為消息解析器,304為消息機(jī)制,305為訂閱表,306為高速緩沖存儲器,以及307為代理數(shù)據(jù)庫。消息中介302的作用是執(zhí)行與客戶交換多種信息相關(guān)的通訊,并且事件信息由消息解析器303接收。然后,消息解析器303在訂閱表305中檢測與該事件信息對應(yīng)的代理信息,并根據(jù)代理信息將一對應(yīng)的消息插入到消息隊列中。此外,該代理處理系統(tǒng)將代理讀取到高速緩沖存儲器306中,將代理從高速緩沖存儲器306中刪除以及給代理分配線程。
圖4示意性地示出消息處理裝置的功能。線程分配裝置401由代理管理裝置402管理以分配線程404。消息處理裝置403處理代理的消息直到滿足一預(yù)定的標(biāo)準(zhǔn)。線程分配裝置401不僅能將線程分配給存在于高速緩沖存儲器306中的代理,還可以從數(shù)據(jù)庫307中調(diào)用代理到高速緩沖存儲器中以為該代理分配線程。代理管理裝置402根據(jù)代理所擁有的消息的優(yōu)先級別和代理是否存在于高速緩沖存儲器中來調(diào)度線程分配。調(diào)度機(jī)制將參考圖5~12進(jìn)行詳細(xì)的描述。
圖5示出了指示代理的狀態(tài)的變量值的示例。這些變量值被應(yīng)用于管理代理的機(jī)制中,該機(jī)制在圖6中示出并將在后面進(jìn)行描述。指示代理的狀態(tài)的變量包括RUNNING,IN_FILLED,IN_EMPTY,OUT_FILLED,OUT_EMPTY,以及MAX_PRI_FILLED。RUNNING指示代理被分配了一線程。IN_FILLED指示代理在高速緩沖存儲器中且在消息隊列中有消息。IN_EMPTY指示代理在高速緩沖存儲器中且消息隊列為空。OUT_FILLED指示代理不在高速緩沖存儲器中且消息隊列中有消息。OUT_EMPTY指示代理不在高速緩沖存儲器中且消息隊列為空。MAX_PRI_FILLED指示代理有一處于最高優(yōu)先級別的消息。
圖6示出了用于根據(jù)代理所擁有的消息的優(yōu)先級別來管理狀態(tài)的機(jī)制。舉例來說,優(yōu)先級別有0-3,且還有MAX_PRI_FILLED,其為比3更高的最高的優(yōu)先級別。對于優(yōu)先級別為0-3,有RUNNING,IN_FILLED,IN_EMPTY,OUT_FILLED,OUT_EMPTY。對于MAX_PRI_FILLED,代理是否在存儲器中并沒有區(qū)別。其目的是將代理的狀態(tài)設(shè)置為MAX_PRI_FILLED并當(dāng)代理有一處于最高優(yōu)先級別的消息時給予該代理的處理高的優(yōu)先級而不考慮該代理是否存在于存儲器中。
圖7示出了圖6的控制塊(ControlBlock)的數(shù)據(jù)結(jié)構(gòu)。表701示出了在代理鍵(AgentKey)和控制塊之間的一一對應(yīng)。代理鍵用來識別代理并以一對一的關(guān)系對應(yīng)于各自的傳送目的地(用戶)。在圖7的表701中,代理鍵由個人姓名(Mike、Tom以及Eric)來代表。每個控制塊702包含“MessageQueue queue”、“ControlBlock prev”、“ControlBlock next”、“byte state”以及“String type”?!癕essageQueue queue”代表關(guān)于它所相關(guān)的消息隊列的數(shù)據(jù)?!癈ontrolBlock prey”代表關(guān)于它所連接的前一個控制塊的數(shù)據(jù)?!癈ontrolBlock next”代表關(guān)于它所連接的后一個控制塊的數(shù)據(jù)。“byte state”代表它當(dāng)前所處的狀態(tài)(IN_FILLED、IN-EMPTY等)?!癝tring type”代表字符串類型的數(shù)據(jù)。
圖8示出了代理的狀態(tài)轉(zhuǎn)換。代理的狀態(tài)轉(zhuǎn)換是根據(jù)該圖更新的。在這種狀態(tài)轉(zhuǎn)換中,當(dāng)代理在狀態(tài)IN_FILLED、IN_EMPTY、OUT_FILLED或OUT_EMPTY中接收到最高優(yōu)先級別的消息時,代理的狀態(tài)變?yōu)镸AX_PRI_FILLED。一旦線程可用,則該代理將被優(yōu)先分配該線程并改變?yōu)镽UNNING狀態(tài)。
圖9示出了用于通過插入消息而更新代理的狀態(tài)的流程。當(dāng)在步驟901中接收到一消息時,在步驟902中判斷該接收到的消息在該代理擁有的消息中是否處于最高的優(yōu)先級別。如果判斷接收到的消息沒有處于最高的優(yōu)先級別,則該更新過程退出。如果判斷接收到的消息在當(dāng)前該代理擁有的消息中處于最高的優(yōu)先級別,則轉(zhuǎn)至步驟903。在步驟903中,判斷該消息的優(yōu)先級別是否為最高優(yōu)先級別。如果該優(yōu)先級別為最高優(yōu)先級別,則在步驟904中,代理的狀態(tài)被更新為MAX_PRI_FILLED從而指示最高優(yōu)先級別,用于連接控制塊的過程也被更新,且該過程退出。如果該優(yōu)先級別不是最高優(yōu)先級別,則在步驟905中判斷接收到的消息的優(yōu)先級別。此時,也更新用于連接控制塊的過程。接下來,在步驟906中,判斷該代理是否已經(jīng)有消息,即,是否其狀態(tài)為圖8中OUT_FILLED和IN_FILLED其中之一。如果代理已經(jīng)有消息,則代理的狀態(tài)被更新為OUT_FILLED或IN_FILLED狀態(tài)且其取決于代理的優(yōu)先級別,用于連接控制塊的過程也被更新,且該過程退出。另一方面,如果該代理尚未有消息,則在步驟907中,代理的狀態(tài)將根據(jù)圖8中的“接收到消息”更新為OUT_FILLED或IN_FILLED的狀態(tài)且其取決于該代理的優(yōu)先級別,用于連接控制塊的過程也被更新,且該過程退出。
圖10示出了用于將線程分配給代理的流程。在步驟1001中,判斷是否存在具有MAX_PRI_FILLED的消息的代理。如果判斷沒有這樣的消息,則在步驟1002中判斷是否有IN_FILLED的消息。如果判斷沒有這樣的消息,則在步驟1003中判斷是否有OUT_FILLED的消息。如果判斷沒有這樣的消息,則返回到開始。在步驟1001、1002和1003中,最優(yōu)先處理的消息是MAX_PRI_FILLED的消息,而次之最優(yōu)先處理消息的是存在于高速緩沖存儲器中的代理所擁有的消息。就是說,IN_FILLED被給予高的優(yōu)先級。其目的是減少將代理調(diào)用到高速緩沖存取器中的次數(shù)以及減少對數(shù)據(jù)庫的訪問,以及為了處理處于高優(yōu)先級別的消息。此外,當(dāng)代理在是否在高速緩沖存儲器方面處于相同狀態(tài)時,具有處于更高優(yōu)先級別的消息的代理可優(yōu)先被分配線程。如果在步驟1001、1002和1003中判斷為有一代理(是),則在步驟1004中判斷是否有可用線程。如果有可用線程,則在步驟1005中代理被分配線程。附帶地說,如果該代理沒有在高速緩沖存儲器中,則該代理將被調(diào)用至高速緩沖存儲器中并被分配線程。如果沒有可用線程,則返回到開始。如果沒有可用線程,則該代理可以等待直到線程可用,并被分配線程。
圖11示出了用于處理消息的流程。該過程是在圖10中分配線程的步驟1005后進(jìn)行的。在步驟1101中,該代理處理消息。這些消息是從處于更高優(yōu)先級別的消息開始處理的。在步驟1102中,判斷該代理是否仍有未處理的消息。如果判斷為沒有消息,則根據(jù)圖8中的狀態(tài)轉(zhuǎn)換在步驟1103中執(zhí)行到IN_EMPTY或OUT_EMPTY的更新。在此之后,在步驟1106中,線程被釋放。如果在步驟1102中判斷為仍有消息,則在步驟1104中,判斷是否已經(jīng)處理消息直至滿足預(yù)定的標(biāo)準(zhǔn)。該預(yù)定的標(biāo)準(zhǔn)是,例如,對由該代理擁有的所有處于最高優(yōu)先級別的消息的處理已完成,每個代理的連續(xù)處理的消息的數(shù)目,以及所有優(yōu)先級別為2或更高的消息已被處理。該處理標(biāo)準(zhǔn)可以根據(jù)在消息隊列中未處理消息的數(shù)目或者諸如乘車的時間的情形被動態(tài)地改變。如果在步驟1104中判斷為還沒有處理消息直到預(yù)定的標(biāo)準(zhǔn)被滿足,則返回步驟1101以重復(fù)消息處理。另一方面,如果判斷為消息已被處理直到預(yù)定的標(biāo)準(zhǔn)被滿足,則在步驟1105中,該代理被更新為剩余的消息中的最高優(yōu)先級別。然后,在步驟1106中,該線程被釋放。
圖12為圖6中所示的用于管理代理的優(yōu)先級別和狀態(tài)的機(jī)制的修改的例子。在圖6中,優(yōu)先級別為0-3且最高優(yōu)先級別為MAX_PRI_FILLED。而在圖12中示出了存在最低優(yōu)先級別MIN的情形。在這種情況下,連續(xù)地處理代理的消息。如果下一個將被處理的消息處于最低的優(yōu)先級別MIN,則不處理該代理的消息。該代理的優(yōu)先級別被設(shè)置為MIN且其它代理被處理。在圖11中的步驟1105中,將處理處于優(yōu)先級別高于MIN的消息設(shè)置為所述預(yù)定標(biāo)準(zhǔn)。這樣一來,具有更高優(yōu)先級別的消息的代理的處理被加速。附帶地說,在最低優(yōu)先級別MIN,與在其它優(yōu)先級別0-3中一樣,有狀態(tài)IN_FILLED,IN_EMPTY,OUT_FILLED和OUT_EMPTY。
雖然以上使用一實施例對本發(fā)明進(jìn)行了描述,本發(fā)明的技術(shù)范圍并不限于實施例中所描述的范圍。對本領(lǐng)域的技術(shù)人員來說明顯的是,可以對上述實施例進(jìn)行不同的修改和改進(jìn)。從對權(quán)利要求的范圍的描述可以明顯地看到,修改和改進(jìn)的實施例也可以被包括在本發(fā)明的技術(shù)范圍中。
雖然本發(fā)明的優(yōu)選實施例已被詳細(xì)描述,應(yīng)當(dāng)理解,可以在不脫離附后的權(quán)利要求所定義的本發(fā)明的精神和范圍的情況下進(jìn)行多種改變、替代和更替。
權(quán)利要求
1.一種裝置,包括存儲器;用于根據(jù)代理是否存在于該存儲器中以及是否存在消息,通過根據(jù)插入代理的消息確定代理的優(yōu)先級別來管理代理的狀態(tài)的裝置;用于在已檢測到具有最高優(yōu)先級別的該代理的情況下,如果該代理存在于存儲器中,則給該代理分配線程,以及如果該代理不存在于存儲器中,則在調(diào)用該代理至存儲器之后給該代理分配線程的裝置;以及用于重復(fù)消息處理直至滿足了與已被分配線程的該代理相關(guān)的預(yù)定標(biāo)準(zhǔn)的消息處理裝置。
2.根據(jù)權(quán)利要求1的裝置,其中在未檢測到具有最高優(yōu)先級別的代理的情況下,所述用于分配線程的裝置進(jìn)一步將線程優(yōu)先分配給已經(jīng)存在于所述存儲器中的代理而不是未存在于該存儲器中的代理。
3.根據(jù)權(quán)利要求1的裝置,其中,所述預(yù)定標(biāo)準(zhǔn)根據(jù)情況動態(tài)改變。
4.根據(jù)權(quán)利要求1的裝置,其中,所述預(yù)定標(biāo)準(zhǔn)為,已為一個代理處理了預(yù)定數(shù)量的消息。
5.根據(jù)權(quán)利要求4的裝置,其中,所述用于管理代理的狀態(tài)的裝置進(jìn)一步包括用于在消息被處理后,根據(jù)剩余消息中的具有最高優(yōu)先級別的消息確定該代理的優(yōu)先級別。
6.根據(jù)權(quán)利要求1的裝置,其中,所述預(yù)定標(biāo)準(zhǔn)為,具有除最低優(yōu)先級別之外的優(yōu)先級別的消息均已被處理。
7.一種用于處理代理的消息的方法,包括以下步驟根據(jù)代理是否存在于存儲器中以及是否存在消息,通過根據(jù)插入代理的消息確定代理的優(yōu)先級別來管理代理的狀態(tài);在檢測到具有最高的優(yōu)先級別的代理的情況下,如果該代理存在于該存儲器中,則給該代理分配線程,以及如果該代理不存在于該存儲器中,則在調(diào)用該代理至該存儲器后為該代理分配線程;以及重復(fù)消息處理直至滿足了與已被分配線程的代理相關(guān)的預(yù)定標(biāo)準(zhǔn)。
8.根據(jù)權(quán)利要求7的用于處理代理的消息的方法,其中所述分配線程的步驟進(jìn)一步包括在未檢測到具有最高優(yōu)先級別的代理的情況下,將線程優(yōu)先分配給已經(jīng)存在于所述存儲器中的代理而非未存在于該存儲器中的代理。
9.根據(jù)權(quán)利要求8的用于處理代理的消息的方法,其中在所述分配線程的步驟中,如果在代理是否存在于所述存儲器中這一方面,代理處于相同的狀態(tài),則具有更高優(yōu)先級別的消息將優(yōu)先被分配線程。
10.根據(jù)權(quán)利要求7的用于處理代理的消息的方法,其中,所述預(yù)定標(biāo)準(zhǔn)為,為一個代理已處理了預(yù)定數(shù)量的消息。
11.根據(jù)權(quán)利要求10的用于處理代理的消息的方法,其中,所述管理代理的狀態(tài)的步驟進(jìn)一步包括在消息被處理后,根據(jù)剩余消息中的具有最高優(yōu)先級別的消息確定該代理的優(yōu)先級別的步驟。
12.根據(jù)權(quán)利要求7的用于處理代理的消息的方法,其中,所述預(yù)定標(biāo)準(zhǔn)為,具有除最低優(yōu)先級別之外的優(yōu)先級別的消息均已被處理。
13.一種用于處理代理的消息的方法,包括以下步驟判斷代理的消息是否具有最高的優(yōu)先級別;當(dāng)該消息處于最高優(yōu)先級別時,管理該代理的狀態(tài)以使之處于最高優(yōu)先級別;檢測具有最高優(yōu)先級別消息的代理;將線程分配給具有最高優(yōu)先級別消息的該代理;由該代理處理該消息;判斷是否該代理已處理消息直至滿足了預(yù)定標(biāo)準(zhǔn);并在消息已經(jīng)被處理直至滿足了該預(yù)定標(biāo)準(zhǔn)的情況下,釋放該線程。
14.根據(jù)權(quán)利要求13用于處理代理的消息的方法,其中,所述分配線程的步驟進(jìn)一步包括在僅檢測到具有除最高優(yōu)先級別之外的優(yōu)先級別的代理的情況下,將線程優(yōu)先分配給已經(jīng)存在于所述存儲器中的代理。
15.根據(jù)權(quán)利要求14用于處理代理的消息的方法,其中,在所述分配線程的步驟中,如果在代理是否存在于所述存儲器中這一方面,代理處于相同的狀態(tài),則具有更高優(yōu)先級別的消息將優(yōu)先被分配線程。
16.根據(jù)權(quán)利要求13用于處理代理的消息的方法,其中,所述預(yù)定標(biāo)準(zhǔn)為,為一個代理所處理的消息的預(yù)定數(shù)量。
17.根據(jù)權(quán)利要求16用于處理代理的消息的方法,其中所述管理代理的狀態(tài)的步驟進(jìn)一步包括在消息被處理后,根據(jù)剩余消息中的具有最高優(yōu)先級別的消息確定代理的優(yōu)先級別的步驟。
18.根據(jù)權(quán)利要求13的用于處理代理的消息的方法,其中,所述預(yù)定標(biāo)準(zhǔn)為,具有除最低優(yōu)先級別之外的優(yōu)先級別的消息均已被處理。
19.一種用于使得計算機(jī)執(zhí)行實現(xiàn)根據(jù)權(quán)利要求7~18中任何一個的方法的步驟的程序。
20.一種其上記錄有根據(jù)權(quán)利要求19中的程序的記錄介質(zhì)。
全文摘要
一種裝置,包括存儲器;用于根據(jù)代理是否存在于存儲器中以及是否存在消息,通過根據(jù)插入該代理的消息確定該代理的優(yōu)先級別來管理該代理的狀態(tài)的裝置;用于在檢測到代理有最高的優(yōu)先級別的情況下,如果該代理存在于存儲器中則給該代理分配線程,以及如果該代理不存在于存儲器中,則在調(diào)用該代理至存儲器之后為該代理分配線程的裝置;以及用于重復(fù)消息處理直至滿足了與被分配線程的代理相關(guān)的預(yù)定標(biāo)準(zhǔn)的消息處理裝置。
文檔編號G06F9/00GK1798131SQ20051012428
公開日2006年7月5日 申請日期2005年11月29日 優(yōu)先權(quán)日2004年12月28日
發(fā)明者山本學(xué), 小柳光生, 小林敬明 申請人:國際商業(yè)機(jī)器公司