两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種從多隊列節(jié)點獲取消息的方法及系統(tǒng)的制作方法

文檔序號:6336539閱讀:147來源:國知局
專利名稱:一種從多隊列節(jié)點獲取消息的方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明屬于數(shù)據(jù)處理技術(shù)領(lǐng)域,尤其涉及一種從多隊列節(jié)點獲取消息的方法及系統(tǒng)。
背景技術(shù)
在數(shù)據(jù)集成場景中,需要從一個集成節(jié)點去處理另一節(jié)點上的η個隊列節(jié)點Q1、 Q2、…、Qn,如圖1所示,這η個隊列為Java消息服務(Java Message Service, JMS)隊列,每個隊列節(jié)點中可能存在若干消息,也可能為空,負責接收消息的端點需要遍歷每一個隊列節(jié)點,等待一段時間后,再做接收消息操作處理,對目標隊列節(jié)點做接收消息處理時, 每次只能接收一條消息。其接收消息的過程為整體上順序循環(huán)遍歷各個隊列節(jié)點,對每個隊列節(jié)點等待一段較長的時間τ (例如5秒),然后再去做接收消息處理。如果接收到消息,則等待一段較短的時間t (例如0. 05秒)去繼續(xù)接收消息,直到接收處理的次數(shù)達到一個額定值S (例如 1000次),或者在t時間內(nèi)未接收到消息,則轉(zhuǎn)至下個隊列節(jié)點繼續(xù)進行接收消息處理。當隊列節(jié)點的數(shù)目較少時,接收消息的過程不會出現(xiàn)明顯問題,但是隨著業(yè)務的發(fā)展,所需集成的業(yè)務數(shù)據(jù)類型增多,隊列節(jié)點η的數(shù)目增加,可達20左右,不妨假設(shè)η = 20時,而隊列節(jié)點中只有Q19中有消息,則在接收消息時就必須先遍歷Ql Q18共18個隊列節(jié)點,花費ISXk = 90s時間,才能開始處理Q19中的消息,消息處理速度慢,效率低。

發(fā)明內(nèi)容
本發(fā)明實施例的目的在于提供一種從多隊列節(jié)點獲取消息的方法,旨在解決現(xiàn)有技術(shù)中隨著集成的業(yè)務數(shù)據(jù)類型的增多,隊列節(jié)點η的數(shù)目增加,導致消息處理速度慢,效率低的問題。本發(fā)明實施例是這樣實現(xiàn)的,一種從多隊列節(jié)點獲取消息的方法,所述方法包括下述步驟創(chuàng)建兩個同步隊列,分別記為第一隊列和第二隊列,其中,所述第一隊列用于存放沒有消息存在的隊列節(jié)點,所述第二隊列用于存放有消息存在的隊列節(jié)點;當所述第一隊列中有隊列節(jié)點元素時,循環(huán)取出所述第一隊列中的隊列節(jié)點,將包含有消息的隊列節(jié)點放入所述第二隊列,將沒有包含消息的隊列節(jié)點繼續(xù)放入所述第一隊列;當所述第二隊列中有隊列節(jié)點元素時,循環(huán)取出所述第二隊列中的隊列節(jié)點,對包含有消息的隊列節(jié)點進行消息接收操作處理。本發(fā)明實施例的另一目的在于提供一種從多隊列節(jié)點獲取消息的系統(tǒng),所述系統(tǒng)包括創(chuàng)建模塊,用于創(chuàng)建兩個同步隊列,分別記為第一隊列和第二隊列,其中,所述第一隊列用于存放沒有消息存在的隊列節(jié)點,所述第二隊列用于存放有消息存在的隊列節(jié)點;
第一隊列處理模塊,用于當所述第一隊列中有隊列節(jié)點元素時,循環(huán)取出所述第一隊列中的隊列節(jié)點,將包含有消息的隊列節(jié)點放入所述第二隊列,將沒有包含消息的隊列節(jié)點繼續(xù)放入所述第一隊列;以及第二隊列處理模塊,用于當所述第二隊列中有隊列節(jié)點元素時,循環(huán)取出所述第二隊列中的隊列節(jié)點,對包含有消息的隊列節(jié)點進行消息接收操作處理。在本發(fā)明實施例中,創(chuàng)建兩個同步隊列,分別記為第一隊列和第二隊列,其中,所述第一隊列用于存放沒有消息存在的隊列節(jié)點,所述第二隊列用于存放有消息存在的隊列節(jié)點;當所述第一隊列中有隊列節(jié)點元素時,循環(huán)取出所述第一隊列中的隊列節(jié)點,將包含有消息的隊列節(jié)點放入所述第二隊列,將沒有包含消息的隊列節(jié)點繼續(xù)放入所述第一隊列;當所述第二隊列中有隊列節(jié)點元素時,循環(huán)取出所述第二隊列中的隊列節(jié)點,對包含有消息的隊列節(jié)點進行消息接收操作處理,減少對隊列節(jié)點的消息處理時的等待時間,提高了傳輸效率。


圖1是現(xiàn)有技術(shù)提供的節(jié)點遍歷示意圖;圖2是本發(fā)明實施例提供的從多隊列節(jié)點獲取消息的方法的實現(xiàn)流程圖;圖3是本發(fā)明實施例提供的創(chuàng)建兩個同步隊列的實現(xiàn)流程圖;圖4是本發(fā)明實施例提供的當所述第一隊列中有隊列節(jié)點元素時,循環(huán)取出所述第一隊列中的隊列節(jié)點,將包含有消息的隊列節(jié)點放入所述第二隊列,將沒有包含消息的隊列節(jié)點繼續(xù)放入所述第一隊列的步驟的實現(xiàn)流程圖;圖5是本發(fā)明實施例提供的當所述第二隊列中有隊列節(jié)點元素時,循環(huán)取出所述第二隊列中的隊列節(jié)點,對包含有消息的隊列節(jié)點進行消息接收操作處理的步驟的實現(xiàn)流程圖;圖6是本發(fā)明實施例提供的從多隊列節(jié)點中獲取消息的系統(tǒng)的結(jié)構(gòu)框圖;圖7是本發(fā)明實施例提供的創(chuàng)建模塊的結(jié)構(gòu)框圖;圖8是本發(fā)明實施例提供的第一隊列處理模塊的結(jié)構(gòu)框圖;圖9是本發(fā)明實施例提供的第二隊列處理模塊的結(jié)構(gòu)框圖;圖10是本發(fā)明實施例提供的節(jié)點遍歷示意圖。
具體實施例方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。在本發(fā)明實施例中,采用兩個同步隊列對原始隊列的隊列節(jié)點進行分配調(diào)度,減少處理接收消息時的等待時間,提高效率。本發(fā)明實施例的目的在于提供一種從多隊列節(jié)點獲取消息的方法,所述方法包括下述步驟創(chuàng)建兩個同步隊列,分別記為第一隊列和第二隊列,其中,所述第一隊列用于存放沒有消息存在的隊列節(jié)點,所述第二隊列用于存放有消息存在的隊列節(jié)點;當所述第一隊列中有隊列節(jié)點元素時,循環(huán)取出所述第一隊列中的隊列節(jié)點,將包含有消息的隊列節(jié)點放入所述第二隊列,將沒有包含消息的隊列節(jié)點繼續(xù)放入所述第一隊列;當所述第二隊列中有隊列節(jié)點元素時,循環(huán)取出所述第二隊列中的隊列節(jié)點,對包含有消息的隊列節(jié)點進行消息接收操作處理。本發(fā)明實施例的另一目的在于提供一種從多隊列節(jié)點獲取消息的系統(tǒng),所述系統(tǒng)包括創(chuàng)建模塊,用于創(chuàng)建兩個同步隊列,分別記為第一隊列和第二隊列,其中,所述第一隊列用于存放沒有消息存在的隊列節(jié)點,所述第二隊列用于存放有消息存在的隊列節(jié)占.
^ \\\ 第一隊列處理模塊,用于當所述第一隊列中有隊列節(jié)點元素時,循環(huán)取出所述第一隊列中的隊列節(jié)點,將包含有消息的隊列節(jié)點放入所述第二隊列,將沒有包含消息的隊列節(jié)點繼續(xù)放入所述第一隊列;以及第二隊列處理模塊,用于當所述第二隊列中有隊列節(jié)點元素時,循環(huán)取出所述第二隊列中的隊列節(jié)點,對包含有消息的隊列節(jié)點進行消息接收操作處理。在本發(fā)明實施例中,創(chuàng)建兩個同步隊列,分別記為第一隊列和第二隊列,其中,所述第一隊列用于存放沒有消息存在的隊列節(jié)點,所述第二隊列用于存放有消息存在的隊列節(jié)點;當所述第一隊列中有隊列節(jié)點元素時,循環(huán)取出所述第一隊列中的隊列節(jié)點,將包含有消息的隊列節(jié)點放入所述第二隊列,將沒有包含消息的隊列節(jié)點繼續(xù)放入所述第一隊列;當所述第二隊列中有隊列節(jié)點元素時,循環(huán)取出所述第二隊列中的隊列節(jié)點,對包含有消息的隊列節(jié)點進行消息接收操作處理。實施例一圖2示出了本發(fā)明第一實施例提供的從多隊列節(jié)點獲取消息的方法的實現(xiàn)流程, 其具體的步驟如下所述在步驟SlOl中,創(chuàng)建兩個同步隊列,分別記為第一隊列和第二隊列,其中,所述第一隊列用于存放沒有消息存在的隊列節(jié)點,所述第二隊列用于存放有消息存在的隊列節(jié)
點ο在本發(fā)明實施例中,該創(chuàng)建兩個同步隊列的過程為預處理過程,其主要是將原始隊列中的隊列節(jié)點分為兩部分進行處理,提高處理的效率。在步驟S102中,當所述第一隊列中有隊列節(jié)點元素時,循環(huán)取出所述第一隊列中的隊列節(jié)點,將包含有消息的隊列節(jié)點放入所述第二隊列,將沒有包含消息的隊列節(jié)點繼續(xù)放入所述第一隊列。在本發(fā)明實施例中,由于在預處理過程中,創(chuàng)建兩個同步隊列時,被分配到第一隊列的隊列節(jié)點為沒有包含消息的隊列節(jié)點,被分配到第二隊列的隊列節(jié)點是包含有消息的隊列節(jié)點,由于數(shù)據(jù)傳輸?shù)膶崟r性,被分配到第一隊列的隊列節(jié)點在下一時刻可能會包含消息,而被分配到第二隊列的隊列節(jié)點在下一時刻可能不會包含消息,上述預先創(chuàng)建的第一隊列和第二隊列為后續(xù)的節(jié)點處理帶來便利。在步驟S103中,當所述第二隊列中有隊列節(jié)點元素時,循環(huán)取出所述第二隊列中的隊列節(jié)點,對包含有消息的隊列節(jié)點進行消息接收操作處理。在本發(fā)明實施例中,對于包含有消息的隊列節(jié)點的處理方式與現(xiàn)有的方式類似, 下述有具體的實施例進行描述,在此不再贅述。在本發(fā)明實施例中,將原始隊列中的隊列節(jié)點是否包含消息作為分類依據(jù),將原始隊列中的隊列節(jié)點存放到預先創(chuàng)建兩個同步隊列中,其中,第一隊列存放沒有消息的隊列節(jié)點,第二隊列存放有消息的隊列節(jié)點,然后,采用兩個處理進程分別對這兩個的同步隊列進行消息處理,由于減少了隊列節(jié)點的無用的等待遍歷的時間,提高了傳輸效率,同時采用更加靈活的節(jié)點處理方式,提高軟件的靈活性。實施例二圖3示出了本發(fā)明實施例提供的創(chuàng)建兩個同步隊列的實現(xiàn)流程,其具體的步驟如下所述在步驟S201中,創(chuàng)建兩個同步隊列,分別記為第一隊列和第二隊列。在本發(fā)明實施例中,創(chuàng)建兩個空的同步隊列,該同步隊列用于存放隊列節(jié)點,其存放的依據(jù)是隊列節(jié)點是否包含有消息。在步驟S202中,對原始隊列中的隊列節(jié)點進行檢測,檢測所述隊列節(jié)點是否有消息存在,是則執(zhí)行步驟S203,否則執(zhí)行步驟S204。在步驟S203中,當檢測到所述隊列節(jié)點包含有消息時,將所述對列節(jié)點放入所述第二隊列。在步驟S204中,當檢測到所述隊列節(jié)點沒有包含消息時,將所述對列節(jié)點放入所述第一隊列。在本發(fā)明實施例中,將原始隊列中的節(jié)點分兩個隊列進行存放,其應用于多業(yè)務類型的集成場景中,即為了解決等待時間過長的問題,而采用本實施例提供的創(chuàng)建兩個同步隊列的方式,該過程為預處理過程,第一隊列和第二隊列存放的隊列節(jié)點是暫時的,隨著時間實時變化的。該實施例為執(zhí)行本發(fā)明方案的一個預備工作,其基本是創(chuàng)建兩個同步隊列的過程。實施例三圖4示出了本發(fā)明實施例提供的當所述第一隊列中有隊列節(jié)點元素時,循環(huán)取出所述第一隊列中的隊列節(jié)點,將包含有消息的隊列節(jié)點放入所述第二隊列,將沒有包含消息的隊列節(jié)點繼續(xù)放入所述第一隊列的步驟的實現(xiàn)流程,其具體的步驟如下所述在步驟S301中,當所述第一隊列中有隊列節(jié)點元素時,循環(huán)取出所述第一隊列中的隊列節(jié)點。在本發(fā)明實施例中,該循環(huán)取出第一隊列中的隊列節(jié)點按照先進先出的原則。在步驟S302中,檢測取出的所述第一隊列中的隊列節(jié)點是否包含有消息,是則執(zhí)行步驟S303,否則執(zhí)行步驟S304。在步驟S303中,當所述隊列節(jié)點包含有消息時,將所述隊列節(jié)點放入所述第二隊列。在步驟S304中,當所述隊列節(jié)點不包含消息時,繼續(xù)將所述隊列節(jié)點放入所述第一隊列。
該實施例是對第一隊列中的隊列節(jié)點進行處理的實現(xiàn)過程,將第一隊列中包含消息的隊列節(jié)點放入第二隊列,將第一隊列中沒有包含消息的隊列節(jié)點繼續(xù)放入第一隊列。實施例四圖5示出了本發(fā)明實施例提供的當所述第二隊列中有隊列節(jié)點元素時,循環(huán)取出所述第二隊列中的隊列節(jié)點,對包含有消息的隊列節(jié)點進行消息接收操作處理的步驟的實現(xiàn)流程,其具體的步驟如下所述在步驟S401中,當所述第二隊列中有隊列節(jié)點元素時,循環(huán)取出所述第二隊列中的隊列節(jié)點。在本發(fā)明實施例中,該循環(huán)取出第一隊列中的隊列節(jié)點按照先進先出的原則。在步驟S402中,對每個隊列節(jié)點執(zhí)行監(jiān)聽操作,監(jiān)聽時間為第一時間。在本發(fā)明實施例中,對每個取出的隊列節(jié)點,首先等待一個較長時間,然后再去進行消息的接收操作,該較長時間為監(jiān)聽時間,即為第一時間,假設(shè)為T。在步驟S403中,對監(jiān)聽操作后的隊列節(jié)點進行消息的接收操作處理。在步驟S404中,判斷是否接收到消息,是則執(zhí)行步驟S405,否則執(zhí)行步驟S408。在步驟S405中,當從所述隊列節(jié)點接收到消息時,繼續(xù)對所述隊列節(jié)點執(zhí)行監(jiān)聽操作,所述監(jiān)聽時間為第二時間。在本發(fā)明實施例中,當從隊列節(jié)點接收到消息時,繼續(xù)進行監(jiān)聽操作,該監(jiān)聽時間為第二時間,不妨設(shè)為t。在步驟S406中,對監(jiān)聽操作后的隊列節(jié)點繼續(xù)進行消息的接收操作處理。在步驟S407中,判斷是否接收到消息,是則執(zhí)行步驟S409,否則執(zhí)行步驟S408。在步驟S408中,當在第一時間內(nèi)沒有接收到消息,或在第二時間內(nèi)沒有接收到消息,則將所述隊列節(jié)點放入第一隊列。在本發(fā)明實施例中,上述步驟是一個循環(huán)的過程,直至消息接收完成。在步驟S409中,判斷對所述隊列節(jié)點的接收消息的次數(shù)是否超過預設(shè)閾值,是則執(zhí)行步驟S410,否則執(zhí)行步驟S405。在本發(fā)明實施例中,該接收消息的次數(shù)可設(shè)置為1000次。在步驟S410中,當對所述隊列節(jié)點的接收消息的次數(shù)超過預設(shè)閾值時,將所述隊列節(jié)點放入第二隊列。上述僅為本發(fā)明的一個實施例,其具體是對于第二隊列的隊列節(jié)點的處理流程。本發(fā)明實施例提供的方案解決了多業(yè)務類型集成場景中,減少無用的等待時間, 提高傳輸效率。實施例五圖6示出了本發(fā)明實施例提供的從多隊列節(jié)點中獲取消息的系統(tǒng)的結(jié)構(gòu)框圖,為了便于說明,圖中僅給出了與本發(fā)明實施例相關(guān)的部分。創(chuàng)建模塊11創(chuàng)建兩個同步隊列,分別記為第一隊列和第二隊列,其中,所述第一隊列用于存放沒有消息存在的隊列節(jié)點,所述第二隊列用于存放有消息存在的隊列節(jié)點; 第一隊列處理模塊12當所述第一隊列中有隊列節(jié)點元素時,循環(huán)取出所述第一隊列中的隊列節(jié)點,將包含有消息的隊列節(jié)點放入所述第二隊列,將沒有包含消息的隊列節(jié)點繼續(xù)放入所述第一隊列;第二隊列處理模塊13當所述第二隊列中有隊列節(jié)點元素時,循環(huán)取出所述第二隊列中的隊列節(jié)點,對包含有消息的隊列節(jié)點進行消息接收操作處理。上述僅為本發(fā)明的一個系統(tǒng)實施例,其各模塊的功能如上述方法實施例所述。實施例六作為本發(fā)明的一個實施例,圖7示出了本發(fā)明實施例提供的創(chuàng)建模塊的結(jié)構(gòu)框圖,為了便于說明,圖中僅給出了與本發(fā)明實施例相關(guān)的部分。同步隊列創(chuàng)建模塊111創(chuàng)建兩個同步隊列,分別記為第一隊列和第二隊列;第一檢測模塊112對原始隊列中的隊列節(jié)點進行檢測,檢測所述隊列節(jié)點是否有消息存在;第一放入模塊113當所述第一檢測模塊112檢測到所述隊列節(jié)點包含有消息時,將所述對列節(jié)點放入所述第二隊列;第二放入模塊114當所述第一檢測模塊112檢測到所述隊列節(jié)點沒有包含消息時,將所述對列節(jié)點放入所述第一隊列。上述僅為本發(fā)明的一個系統(tǒng)實施例,其各模塊的功能如上述方法實施例所述。實施例七作為本發(fā)明的一個實施例,圖8示出了本發(fā)明實施例提供的第一隊列處理模塊的結(jié)構(gòu)框圖,為了便于說明,圖中僅給出了與本發(fā)明實施例相關(guān)的部分。第一隊列節(jié)點取出模塊121當所述第一隊列中有隊列節(jié)點元素時,循環(huán)取出所述第一隊列中的隊列節(jié)點;第二檢測模塊122檢測取出的所述第一隊列中的隊列節(jié)點是否包含有消息;當所述第二檢測模塊122檢測所述隊列節(jié)點包含有消息時,第三放入模塊123將所述隊列節(jié)點放入所述第二隊列;當所述第二檢測模塊122檢測所述隊列節(jié)點不包含消息時,第四放入模塊IM繼續(xù)將所述隊列節(jié)點放入所述第一隊列。上述僅為本發(fā)明的一個系統(tǒng)實施例,其各模塊的功能描述如上述方法實施例所述。實施例八作為本發(fā)明的一個具體實施例,圖9示出了本發(fā)明實施例提供的第二隊列處理模塊的結(jié)構(gòu)框圖,為了便于說明,圖中僅給出了與本發(fā)明實施例相關(guān)的部分。第二隊列節(jié)點取出模塊131當所述第二隊列中有隊列節(jié)點元素時,循環(huán)取出所述第二隊列中的隊列節(jié)點;第一監(jiān)聽操作模塊132對每個隊列節(jié)點執(zhí)行監(jiān)聽操作,監(jiān)聽時間為第一時間;第一消息接收模塊133對所述第一監(jiān)聽操作模塊132監(jiān)聽操作后的隊列節(jié)點進行消息的接收操作處理;當所述第一消息接收模塊133從隊列節(jié)點接收到消息時,第二監(jiān)聽操作模塊134繼續(xù)對所述隊列節(jié)點執(zhí)行監(jiān)聽操作,所述監(jiān)聽時間為第二時間;第二消息接收模塊135對所述第二監(jiān)聽操作模塊134監(jiān)聽操作后的隊列節(jié)點繼續(xù)進行消息的接收操作處理,直至消息接收完成;第五放入模塊136當在第一時間內(nèi)沒有接收到消息,或在第二時間內(nèi)沒有接收到消息,則將所述隊列節(jié)點放入第一隊列;第六放入模塊137當對所述隊列節(jié)點的接收消息的次數(shù)超過預設(shè)閾值時,將所述隊列節(jié)點放入第二隊列。上述僅為本發(fā)明的一個系統(tǒng)實施例,其各模塊的功能描述如上述方法實施例所述。實施例九作為本發(fā)明的一個具體實施例,以圖1所示的示意圖為例,假設(shè)Ql、Q2. . . Qn均為集成服務器上的消息通道,其中分別負責轉(zhuǎn)發(fā)工廠1、工廠2...工廠η的數(shù)據(jù)。端點則是一個接收端,它訂閱了此η個消息通道。它需要去處理這η的消息通道中的消息?,F(xiàn)在假設(shè)Ql每1個小時會有一條消息需要處理。Q2每分鐘有1000條消息需要處理。Q3每分鐘有10條消息需要處理。Q4每秒鐘有100條消息需要處理。Q5每天有1000條消息需要處理。其他消息通道都沒有消息。因為各個消息通道的消息頻率和概率是離散分布的。所以如果采用常規(guī)方式,很難保證處理不會因為空消息通道和消息密度大的通道占用過多處理時間,從而令其他通道得不到及時處理。而采用本發(fā)明實施例提供的技術(shù)方案后,可以將該隊列中的隊列節(jié)點分為兩類, 包含消息的和不包含消息的,同時將該分類的隊列節(jié)點分別放入預先創(chuàng)建的同步隊列,分別采用不同的策略對同步隊列中的節(jié)點進行消息處理,提高了數(shù)據(jù)的傳輸效率,下述給出一個具體的實施過程參閱圖10假設(shè)目前Ql Q5中消息數(shù)量1.創(chuàng)建兩個同步的先進先出(FIFO)隊列,分別是第一隊列和第二隊列;2.遍歷Ql Q5,將有消息的Q1、Q4、Q5放入第二隊列,沒有消息的Q2、Q3放入第一隊列;3.監(jiān)聽Ql —段時間tl,接收消息;4.監(jiān)聽Ql —段時間t2,沒有收到消息,將Ql放入第一隊列,轉(zhuǎn)向處理Q4 ;5.監(jiān)聽Q4 —段時間tl,接收消息;6.監(jiān)聽Q4—段時間t2,接收消息,直到?jīng)]有消息為止,將Q4放入第一隊列,轉(zhuǎn)向處理Q5 ;7.監(jiān)聽Q5 —段時間tl,接收消息;8.監(jiān)聽Q5 —段時間t2,接收消息,直到?jīng)]有消息為止,將Q5放入第一隊列;9.返回步驟2,重新處理。上述僅為本發(fā)明的一個具體實施例,在此不用以限制本發(fā)明。在本發(fā)明實施例中,創(chuàng)建兩個同步隊列,分別記為第一隊列和第二隊列,其中,所述第一隊列用于存放沒有消息存在的隊列節(jié)點,所述第二隊列用于存放有消息存在的隊列節(jié)點;當所述第一隊列中有隊列節(jié)點元素時,循環(huán)取出所述第一隊列中的隊列節(jié)點,將包含有消息的隊列節(jié)點放入所述第二隊列,將沒有包含消息的隊列節(jié)點繼續(xù)放入所述第一隊列;當所述第二隊列中有隊列節(jié)點元素時,循環(huán)取出所述第二隊列中的隊列節(jié)點,對包含有消息的隊列節(jié)點進行消息接收操作處理,減少對隊列節(jié)點的消息處理時的等待時間,提高了傳輸效率。采用本發(fā)明所述的策略可以有效地將需要處理和無需處理的隊列節(jié)點分別對待處理,而且可以通過進一步的設(shè)置檢測次數(shù)閾值,避免在某一個節(jié)點上消耗過多時間,在大規(guī)模多隊列節(jié)點的集成場景中,采用本發(fā)明的策略,可以有效避免過多的等待時間,體現(xiàn)出負載均衡的特點,提高集成的效率。以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進等,均應包含在本發(fā)明的保護范圍之內(nèi)。
權(quán)利要求
1.一種從多隊列節(jié)點獲取消息的方法,其特征在于,所述方法包括下述步驟創(chuàng)建兩個同步隊列,分別記為第一隊列和第二隊列,其中,所述第一隊列用于存放沒有消息存在的隊列節(jié)點,所述第二隊列用于存放有消息存在的隊列節(jié)點;當所述第一隊列中有隊列節(jié)點元素時,循環(huán)取出所述第一隊列中的隊列節(jié)點,將包含有消息的隊列節(jié)點放入所述第二隊列,將沒有包含消息的隊列節(jié)點繼續(xù)放入所述第一隊列;當所述第二隊列中有隊列節(jié)點元素時,循環(huán)取出所述第二隊列中的隊列節(jié)點,對包含有消息的隊列節(jié)點進行消息接收操作處理。
2.如權(quán)利要求1所述的方法,其特征在于,所述創(chuàng)建兩個同步隊列,分別記為第一隊列和第二隊列的具體步驟具體包括創(chuàng)建兩個同步隊列,分別記為第一隊列和第二隊列; 對原始隊列中的隊列節(jié)點進行檢測,檢測所述隊列節(jié)點是否有消息存在; 當檢測到所述隊列節(jié)點包含有消息時,將所述對列節(jié)點放入所述第二隊列; 當檢測到所述隊列節(jié)點沒有包含消息時,將所述對列節(jié)點放入所述第一隊列。
3.如權(quán)利要求1所述的方法,其特征在于,所述當所述第一隊列中有隊列節(jié)點元素時, 循環(huán)取出所述第一隊列中的隊列節(jié)點,將包含有消息的隊列節(jié)點放入所述第二隊列,將沒有包含消息的隊列節(jié)點繼續(xù)放入所述第一隊列的步驟具體包括下述步驟當所述第一隊列中有隊列節(jié)點元素時,循環(huán)取出所述第一隊列中的隊列節(jié)點; 檢測取出的所述第一隊列中的隊列節(jié)點是否包含有消息; 當所述隊列節(jié)點包含有消息時,將所述隊列節(jié)點放入所述第二隊列; 當所述隊列節(jié)點不包含消息時,繼續(xù)將所述隊列節(jié)點放入所述第一隊列。
4.如權(quán)利要求1所述的方法,其特征在于,所述當所述第二隊列中有隊列節(jié)點元素時, 循環(huán)取出所述第二隊列中的隊列節(jié)點,對包含有消息的隊列節(jié)點進行消息接收操作處理的步驟具體包含下述步驟當所述第二隊列中有隊列節(jié)點元素時,循環(huán)取出所述第二隊列中的隊列節(jié)點; 對每個隊列節(jié)點執(zhí)行監(jiān)聽操作,監(jiān)聽時間為第一時間; 對監(jiān)聽操作后的隊列節(jié)點進行消息的接收操作處理;當從所述隊列節(jié)點接收到消息時,繼續(xù)對所述隊列節(jié)點執(zhí)行監(jiān)聽操作,所述監(jiān)聽時間為第二時間;對監(jiān)聽操作后的隊列節(jié)點繼續(xù)進行消息的接收操作處理,直至消息接收完成; 當在第一時間內(nèi)沒有接收到消息,或在第二時間內(nèi)沒有接收到消息,則將所述隊列節(jié)點放入第一隊列;當對所述隊列節(jié)點的接收消息的次數(shù)超過預設(shè)閾值時,將所述隊列節(jié)點放入第二隊列。
5.一種從多隊列節(jié)點獲取消息的系統(tǒng),其特征在于,所述系統(tǒng)包括創(chuàng)建模塊,用于創(chuàng)建兩個同步隊列,分別記為第一隊列和第二隊列,其中,所述第一隊列用于存放沒有消息存在的隊列節(jié)點,所述第二隊列用于存放有消息存在的隊列節(jié)點;第一隊列處理模塊,用于當所述第一隊列中有隊列節(jié)點元素時,循環(huán)取出所述第一隊列中的隊列節(jié)點,將包含有消息的隊列節(jié)點放入所述第二隊列,將沒有包含消息的隊列節(jié)點繼續(xù)放入所述第一隊列;以及第二隊列處理模塊,用于當所述第二隊列中有隊列節(jié)點元素時,循環(huán)取出所述第二隊列中的隊列節(jié)點,對包含有消息的隊列節(jié)點進行消息接收操作處理。
6.如權(quán)利要求5所述的系統(tǒng),其特征在于,所述創(chuàng)建模塊具體包括 同步隊列創(chuàng)建模塊,用于創(chuàng)建兩個同步隊列,分別記為第一隊列和第二隊列;第一檢測模塊,用于對原始隊列中的隊列節(jié)點進行檢測,檢測所述隊列節(jié)點是否有消息存在;第一放入模塊,用于當所述第一檢測模塊檢測到所述隊列節(jié)點包含有消息時,將所述對列節(jié)點放入所述第二隊列;以及第二放入模塊,用于當所述第一檢測模塊檢測到所述隊列節(jié)點沒有包含消息時,將所述對列節(jié)點放入所述第一隊列。
7.如權(quán)利要求5所述的系統(tǒng),其特征在于,所述第一隊列處理模塊具體包括第一隊列節(jié)點取出模塊,用于當所述第一隊列中有隊列節(jié)點元素時,循環(huán)取出所述第一隊列中的隊列節(jié)點;第二檢測模塊,用于檢測取出的所述第一隊列中的隊列節(jié)點是否包含有消息; 第三放入模塊,用于當所述第二檢測模塊檢測所述隊列節(jié)點包含有消息時,將所述隊列節(jié)點放入所述第二隊列;以及第四放入模塊,用于當所述第二檢測模塊檢測所述隊列節(jié)點不包含消息時,繼續(xù)將所述隊列節(jié)點放入所述第一隊列。
8.如權(quán)利要求5所述的系統(tǒng),其特征在于,所述第二隊列處理模塊具體包括第二隊列節(jié)點取出模塊,用于當所述第二隊列中有隊列節(jié)點元素時,循環(huán)取出所述第二隊列中的隊列節(jié)點;第一監(jiān)聽操作模塊,用于對每個隊列節(jié)點執(zhí)行監(jiān)聽操作,監(jiān)聽時間為第一時間; 第一消息接收模塊,用于對所述第一監(jiān)聽操作模塊監(jiān)聽操作后的隊列節(jié)點進行消息的接收操作處理;第二監(jiān)聽操作模塊,用于當所述第一消息接收模塊從隊列節(jié)點接收到消息時,繼續(xù)對所述隊列節(jié)點執(zhí)行監(jiān)聽操作,所述監(jiān)聽時間為第二時間;第二消息接收模塊,用于對所述第二監(jiān)聽操作模塊監(jiān)聽操作后的隊列節(jié)點繼續(xù)進行消息的接收操作處理,直至消息接收完成;第五放入模塊,用于當在第一時間內(nèi)沒有接收到消息,或在第二時間內(nèi)沒有接收到消息,則將所述隊列節(jié)點放入第一隊列;以及第六放入模塊,用于當對所述隊列節(jié)點的接收消息的次數(shù)超過預設(shè)閾值時,將所述隊列節(jié)點放入第二隊列。
全文摘要
本發(fā)明適用于數(shù)據(jù)處理技術(shù)領(lǐng)域,提供了一種從多隊列節(jié)點獲取消息的方法及系統(tǒng),所述方法包括下述步驟創(chuàng)建兩個同步隊列,分別記為第一隊列和第二隊列,其中,所述第一隊列用于存放沒有消息存在的隊列節(jié)點,所述第二隊列用于存放有消息存在的隊列節(jié)點;當所述第一隊列中有隊列節(jié)點元素時,循環(huán)取出所述第一隊列中的隊列節(jié)點,將包含有消息的隊列節(jié)點放入所述第二隊列,將沒有包含消息的隊列節(jié)點繼續(xù)放入所述第一隊列;當所述第二隊列中有隊列節(jié)點元素時,循環(huán)取出所述第二隊列中的隊列節(jié)點,對包含有消息的隊列節(jié)點進行消息接收操作處理,減少對隊列節(jié)點的消息處理時的等待時間,提高了傳輸效率。
文檔編號G06F9/48GK102479106SQ20101055528
公開日2012年5月30日 申請日期2010年11月23日 優(yōu)先權(quán)日2010年11月23日
發(fā)明者崔燦 申請人:金蝶軟件(中國)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
梁平县| 化州市| 甘南县| 南华县| 四平市| 义马市| 新和县| 岗巴县| 岳阳市| 平潭县| 梧州市| 青川县| 兰州市| 哈尔滨市| 汉中市| 伊春市| 贡觉县| 武川县| 克什克腾旗| 靖安县| 鄂伦春自治旗| 淮南市| 丰台区| 平罗县| 望都县| 息烽县| 博白县| 嫩江县| 黄陵县| 武威市| 太白县| 中西区| 通榆县| 孝感市| 晋宁县| 五台县| 泗水县| 灵山县| 镇平县| 吉林市| 盐亭县|