国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      處理異步消息隊(duì)列的方法及系統(tǒng)的制作方法

      文檔序號(hào):9349799閱讀:463來源:國(guó)知局
      處理異步消息隊(duì)列的方法及系統(tǒng)的制作方法
      【技術(shù)領(lǐng)域】
      [0001]本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,具體涉及一種處理異步消息隊(duì)列的方法及系統(tǒng)。
      【背景技術(shù)】
      [0002]消息隊(duì)列處理以其異步處理、安全、穩(wěn)定等特性,滲透到了當(dāng)今互聯(lián)網(wǎng)各個(gè)領(lǐng)域。生產(chǎn)者將產(chǎn)生的消息放入消息隊(duì)列,消費(fèi)者監(jiān)聽該消息隊(duì)列并消費(fèi)數(shù)據(jù)。有時(shí)候多個(gè)消息生產(chǎn)者向消息隊(duì)列發(fā)送消息,但由于網(wǎng)絡(luò)延遲等原因,無法保證消息隊(duì)列以一定的優(yōu)先級(jí)來接收消息,因此無法保證消費(fèi)者按照一定優(yōu)先級(jí)來消費(fèi)數(shù)據(jù)。
      [0003]通常地,現(xiàn)有技術(shù)中利用業(yè)務(wù)邏輯控制來保證數(shù)據(jù)的優(yōu)先級(jí)。具體地:通過比較多條消息的特定業(yè)務(wù)屬性(例如消息對(duì)應(yīng)的版本號(hào))來判斷消息處理的先后順序。該方案占用更多的內(nèi)存空間及消耗更多的CPU資源,從而降低系統(tǒng)性能。
      [0004]另外,現(xiàn)有技術(shù)中還采用數(shù)據(jù)庫(kù)檢索方式,該方案會(huì)占用更多的數(shù)據(jù)庫(kù)連接,當(dāng)大并發(fā)時(shí)會(huì)降低數(shù)據(jù)庫(kù)處理性能,從而降低系統(tǒng)整體處理速度。

      【發(fā)明內(nèi)容】

      [0005]有鑒于此,本發(fā)明提供一種能夠正確按照優(yōu)先級(jí)進(jìn)行處理的、簡(jiǎn)便易行的處理異步消息隊(duì)列的方法及系統(tǒng)。
      [0006]為實(shí)現(xiàn)上述目的,根據(jù)本發(fā)明的第一方面,提供了一種處理異步消息隊(duì)列的方法,包括:生產(chǎn)者為每條消息設(shè)置優(yōu)先級(jí)參數(shù),將多條消息批量發(fā)送到消息隊(duì)列,所述消息包括消息主體、消息關(guān)鍵字和優(yōu)先級(jí)參數(shù);所述消息隊(duì)列保存所述消息;消費(fèi)者從所述消息隊(duì)列中消費(fèi)所述消息;業(yè)務(wù)處理單元獲取所述消費(fèi)者的消費(fèi)結(jié)果并參照所述優(yōu)先級(jí)參數(shù)進(jìn)行處理。
      [0007]可選地,所述消費(fèi)者從所述消息隊(duì)列中消費(fèi)所述消息的步驟包括:所述消費(fèi)者從所述消息隊(duì)列中消費(fèi)逐條讀取消息;所述消費(fèi)者將所述消息以有序集合類型存放于第一緩存隊(duì)列中,同時(shí)所述消費(fèi)者將所述消息的所述消息關(guān)鍵字以鏈表類型存放于第二緩存隊(duì)列中,并且,所述業(yè)務(wù)處理單元獲取所述消費(fèi)者的消費(fèi)結(jié)果并參照所述優(yōu)先級(jí)參數(shù)進(jìn)行處理的步驟包括:所述業(yè)務(wù)處理單元以阻塞方式監(jiān)聽所述第二緩存隊(duì)列,當(dāng)監(jiān)聽到所述消息關(guān)鍵字存入所述第二緩存隊(duì)列時(shí),清空當(dāng)前本地緩存數(shù)據(jù);所述業(yè)務(wù)處理單元從所述第一緩存隊(duì)列中獲取所述消息關(guān)鍵字對(duì)應(yīng)的所有的、自動(dòng)按所述優(yōu)先級(jí)參數(shù)排序的所述消息中的所述消息主體緩存到本地,按順序進(jìn)行業(yè)務(wù)處理。
      [0008]可選地,所述業(yè)務(wù)處理單元開啟多個(gè)線程以阻塞方式監(jiān)聽所述第二緩存隊(duì)列。
      [0009]可選地,所述優(yōu)先級(jí)參數(shù)采用正整數(shù)表示,數(shù)字越小優(yōu)先級(jí)越高。
      [0010]為實(shí)現(xiàn)上述目的,根據(jù)本發(fā)明的第二方面,提供了一種處理異步消息隊(duì)列的系統(tǒng),包括:生產(chǎn)者,用于為每條消息設(shè)置優(yōu)先級(jí)參數(shù),將多條消息批量發(fā)送到消息隊(duì)列,所述消息包括消息主體、消息關(guān)鍵字和優(yōu)先級(jí)參數(shù);所述消息隊(duì)列,用于保存所述消息;消費(fèi)者,用于從所述消息隊(duì)列中消費(fèi)所述消息;業(yè)務(wù)處理單元,用于獲取所述消費(fèi)者的消費(fèi)結(jié)果并參照所述優(yōu)先級(jí)參數(shù)進(jìn)行處理。
      [0011]可選地,還包括:第一緩存隊(duì)列,用于以優(yōu)先級(jí)有序集合類型存放所述消息;第二緩存隊(duì)列,用于以鏈表類型存放所述消息的所述消息關(guān)鍵字;所述消費(fèi)者還用于從所述消息隊(duì)列中逐條讀取消息,然后將所述消息以優(yōu)先級(jí)有序集合類型存放于第一緩存隊(duì)列中,并且將所述消息的所述消息關(guān)鍵字以鏈表類型存放于第二緩存隊(duì)列中;所述業(yè)務(wù)處理單元還用于以阻塞方式監(jiān)聽所述第二緩存隊(duì)列,當(dāng)監(jiān)聽到所述消息關(guān)鍵字存入所述第二緩存隊(duì)列時(shí),清空當(dāng)前本地緩存數(shù)據(jù),然后從所述第一緩存隊(duì)列中取出所述消息關(guān)鍵字對(duì)應(yīng)的所有的、自動(dòng)按所述優(yōu)先級(jí)參數(shù)排序的所述消息中的消息主體緩存到本地,按順序進(jìn)行業(yè)務(wù)處理。
      [0012]可選地,所述業(yè)務(wù)處理單元開啟多個(gè)線程以阻塞方式監(jiān)聽所述第二緩存隊(duì)列。
      [0013]可選地,所述優(yōu)先級(jí)參數(shù)采用正整數(shù)表示,數(shù)字越小優(yōu)先級(jí)越高。
      [0014]根據(jù)本發(fā)明的技術(shù)方案,通過消費(fèi)者先將消息整體地存入sortedset的同時(shí)將消息關(guān)鍵字存入list,然后業(yè)務(wù)處理單元根據(jù)監(jiān)聽到的消息關(guān)鍵字從sortedset中讀出消息主體,這樣可以實(shí)現(xiàn)按一定優(yōu)先級(jí)規(guī)則順序地處理具有相同關(guān)鍵字的多條消息,具有簡(jiǎn)單易行,處理效率高的優(yōu)點(diǎn)。
      【附圖說明】
      [0015]附圖用于更好地理解本發(fā)明,不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。其中:
      [0016]圖1是根據(jù)本發(fā)明實(shí)施例的處理異步消息隊(duì)列的方法的主要流程示意圖;
      [0017]圖2是根據(jù)本發(fā)明實(shí)施例的處理異步消息隊(duì)列的系統(tǒng)的主要部件示意圖;
      [0018]圖3是本發(fā)明的處理異步消息隊(duì)列的技術(shù)方案的時(shí)序圖。
      【具體實(shí)施方式】
      [0019]以下結(jié)合附圖對(duì)本發(fā)明的示范性實(shí)施例做出說明,其中包括本發(fā)明實(shí)施例的各種細(xì)節(jié)以助于理解,應(yīng)當(dāng)將它們認(rèn)為僅僅是示范性的。因此,本領(lǐng)域普通技術(shù)人員應(yīng)當(dāng)認(rèn)識(shí)至IJ,可以對(duì)這里描述的實(shí)施例做出各種改變和修改,而不會(huì)背離本發(fā)明的范圍和精神。同樣,為了清楚和簡(jiǎn)明,以下的描述中省略了對(duì)公知功能和結(jié)構(gòu)的描述。
      [0020]為使技術(shù)人員更好地理解,對(duì)部分專業(yè)術(shù)語(yǔ)介紹如下:
      [0021]生產(chǎn)者:即消息的提供者、發(fā)送者,注意在本技術(shù)領(lǐng)域中,此處本質(zhì)通常是指一個(gè)節(jié)點(diǎn)而非一個(gè)自然人。
      [0022]消息:可以是數(shù)據(jù)或管理指令等等。
      [0023]消息隊(duì)列:消息隊(duì)列是用來異步處理一系列輸入消息的通信方式。消息隊(duì)列可以通過消息隊(duì)列服務(wù)器實(shí)現(xiàn)。
      [0024]消費(fèi)者:即消息的使用者、接收者,注意在本技術(shù)領(lǐng)域中,此處本質(zhì)通常是指一個(gè)節(jié)點(diǎn)而非一個(gè)自然人。
      [0025]關(guān)鍵字:能唯一確定消息記錄的屬性或者是屬性的集合。
      [0026]Redis:Redis是一個(gè)開源、支持網(wǎng)絡(luò)、基于內(nèi)存的鍵值對(duì)(key-value)存儲(chǔ)數(shù)據(jù)庫(kù),支持多種數(shù)據(jù)類型和多種操作,具有強(qiáng)大的管理數(shù)據(jù)的功能。它支持存儲(chǔ)的value類型包括字符串(string)、鏈表(list)、集合(set)和有序集合(zset,例如sortedset)。這些數(shù)據(jù)類型都支持push/pop、add/remove及取交集并集和差集及更豐富的操作,而且這些操作都是原子性的。
      [0027]優(yōu)先級(jí)有序集合類型:即sortedset類型,為redis所支持zset類型的一種,可以支持?jǐn)?shù)據(jù)自動(dòng)按照優(yōu)先級(jí)進(jìn)行排序。
      [0028]鏈表類型:即list類型,為redis所支持類型的一種,可以支持阻塞讀取。
      [0029]圖1是根據(jù)本發(fā)明實(shí)施例的處理異步消息隊(duì)列的方法的主要流程示意圖。如圖1所示,該方法主要包括以下的步驟SlOl至步驟S104。
      [0030]步驟SlOl:生產(chǎn)者為每條消息設(shè)置優(yōu)先級(jí)參數(shù),將多條消息批量發(fā)送到消息隊(duì)列。其中,消息包括消息主體messagebody、消息關(guān)鍵字key和優(yōu)先級(jí)參數(shù)sort。
      [0031]可選地,優(yōu)先級(jí)參數(shù)采用正整數(shù)表示,數(shù)字越小優(yōu)先級(jí)越高。這種表達(dá)形式具有簡(jiǎn)便易行的優(yōu)點(diǎn)。
      [0032]步驟S102:消息隊(duì)列保存消息。
      [0033]通過消息隊(duì)列,將短時(shí)間高并發(fā)產(chǎn)生的事務(wù)消息存儲(chǔ)在消息隊(duì)列中,從而削平高峰期的并發(fā)事務(wù),改善系統(tǒng)性能。
      [0034]步驟S103:消費(fèi)者從所述消息隊(duì)列中消費(fèi)消息。具體地過程如下:
      [0035]首先,消費(fèi)者從消息隊(duì)列中逐條讀取消息。然后,將消息以優(yōu)先級(jí)有序集合類型存放于第一緩存隊(duì)列中,同時(shí)將消息的消息關(guān)鍵字以鏈表類型存放于第二緩存隊(duì)列中。
      [0036]需要說明的是,將消息整體地以優(yōu)先級(jí)有序集合sortedset類型存放于第一緩存隊(duì)列redisl的過程中,存入redisl的消息可以形如:[消息關(guān)鍵字key優(yōu)先級(jí)參數(shù)sort消息主體內(nèi)容message body]。每存進(jìn)去一個(gè)數(shù)據(jù),
      當(dāng)前第1頁(yè)1 2 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1