一種消息處理方法和裝置的制造方法
【專利摘要】本發明公開了一種消息處理方法和裝置。該方法包括:在接收到的消息中,查找消息條件;獲取預先創建的散列表中,與所述消息條件對應的處理邏輯;根據所述處理邏輯,對所述消息執行邏輯處理。本發明事先為用于觸發處理邏輯的消息條件生成散列地址,并在散列地址指向的存儲位置保存處理邏輯,當有消息送達服務器時,首先根據該消息中的消息條件生成散列地址,通過散列地址直接找到處理邏輯,根據該處理邏輯對該消息進行邏輯處理。基于本發明可以有效降低處理邏輯的判斷復雜度,提供開發效率,減少服務器的后期維護成本。
【專利說明】
一種消息處理方法和裝置
技術領域
[0001 ]本發明涉及通信技術領域,特別是涉及一種消息處理方法和裝置。
【背景技術】
[0002]服務器在處理業務時,需要對不同的消息作出不同的處理。在現有技術中,服務器需要根據消息的種類去做枚舉,來確定消息應當執行的處理邏輯,即列舉消息的每一種可能情況,對每一種情況做出邏輯判斷,最終確定消息應當執行的處理邏輯。例如:現有8種消息類型、6種事件類型,7種事件鍵值(KEY),那么如果對消息所有可能出現的情況進行邏輯判斷時,就需要實現8*6*7 = 336種邏輯判斷,運行效率較低。
[0003]在實際應用場景中,例如:微信公眾號的服務器端對于客戶端發來的消息,首先需要服務器對該消息做多重判斷,而不能直接判斷出該消息應該執行的處理邏輯。隨著業務的不斷擴展,處理邏輯判斷會變得異常復雜,影響開發效率,并且增加后期服務器的維護成本。
【發明內容】
[0004]本發明的目的是提供一種消息處理方法和裝置,用以解決現有技術中消息的處理邏輯判斷復雜的問題。
[0005]針對上述技術問題,本發明是通過以下技術方案來解決的。
[0006]本發明提供了一種消息處理方法,包括:在接收到的消息中,查找消息條件;獲取預先創建的散列表中,與所述消息條件對應的處理邏輯;根據所述處理邏輯,對所述消息執行邏輯處理。
[0007]其中,創建所述散列表,包括:預先建立消息條件和處理邏輯之間的對應關系;為所述消息條件生成散列地址;將所述消息條件對應的所述處理邏輯存儲在所述散列地址中,形成散列表。
[0008]其中,所述獲取預先生成的散列表中,與所述消息條件對應的處理邏輯,包括:為查找到的所述消息條件生成散列地址;根據為查找到的所述消息條件生成的所述散列地址,在預先創建的散列表中獲取處理邏輯。
[0009]其中,所述消息條件包括:消息的屬性信息。
[0010]其中,所述屬性信息包括:消息類型和事件類型。
[0011]本發明還提供了一種消息處理裝置,包括:查找模塊,用于在接收到的消息中,查找消息條件;獲取模塊,用于獲取預先創建的散列表中,與所述消息條件對應的處理邏輯;處理模塊,用于根據所述處理邏輯,對所述消息執行邏輯處理。
[0012]其中,所述裝置還包括創建模塊;所述創建模塊,用于在查找模塊在接收到的消息中查找消息條件之前,預先創建所述散列表;所述創建模塊,具體用于預先建立消息條件和處理邏輯之間的對應關系;為所述消息條件生成散列地址;將所述消息條件對應的處理邏輯存儲在所述散列地址中,形成散列表。
[0013]其中,所述獲取模塊,用于:為查找到的所述消息條件生成散列地址;根據為查找到的所述消息條件生成的所述散列地址,在預先創建的散列表中獲取處理邏輯。
[0014]其中,所述消息條件包括:消息的屬性信息。
[0015]其中,所述屬性信息包括:消息類型和事件類型。
[0016]本發明有益效果如下:
[0017]本發明事先為用于觸發處理邏輯的消息條件生成散列地址,并在散列地址指向的存儲位置保存處理邏輯,當有消息送達服務器時,首先根據該消息中的消息條件生成散列地址,通過散列地址直接找到處理邏輯,根據該處理邏輯對該消息進行邏輯處理。基于本發明可以有效降低處理邏輯的判斷復雜度,提供開發效率,減少服務器的后期維護成本。
【附圖說明】
[0018]圖1是根據本發明一實施例的消息處理方法的流程圖;
[0019]圖2是根據本發明一實施例的消息處理裝置的結構圖。
【具體實施方式】
[0020]本發明事先為用于觸發處理邏輯的消息條件生成散列地址,并在散列地址指向的存儲位置保存處理邏輯,也就是說,將用于觸發處理邏輯的消息條件與處理邏輯做一一對應的映射關系。當有消息送達服務器時,首先根據該消息中的消息條件生成散列地址,通過散列地址可以直接找到處理邏輯,根據該消息處理邏輯對該消息進行邏輯處理。基于本發明可以有效降低處理邏輯的判斷復雜度,提供開發效率,減少服務器的后期維護成本。
[0021]以下結合附圖以及實施例,對本發明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發明,并不限定本發明。
[0022]本發明實施例提供了一種消息處理方法,如圖1所示,為根據本發明一實施例的消息處理方法的流程圖。本實施例在服務器側執行。
[0023]步驟S110,在接收到的消息中,查找消息條件。
[0024]步驟S120,獲取預先創建的散列表中,與所述消息條件對應的處理邏輯。
[0025]步驟S130,根據所述處理邏輯,對所述消息執行邏輯處理。
[0026]消息條件包括:消息的屬性信息。屬性信息包括:消息類型、事件類型。屬性信息還可以包括:事件鍵值。
[0027]散列表是根據關鍵字(Keyvalue)直接訪問內存存儲位置的數據結構。也就是說,散列表通過計算一個關于鍵值的函數,將所需查詢的數據映射到散列表中一個位置,加快了查找速度。
[0028]在本實施例中,散列表用于存儲消息條件和處理邏輯的映射關系。在獲得消息之后,在消息中查找消息條件,為查找到的消息條件生成散列地址;根據為查找到的消息條件生成的散列地址,在預先創建的散列表中獲取處理邏輯,即在預先創建的散列表中,獲取該散列地址指向的處理邏輯。換言之,提取消息中包含的消息條件;根據消息條件計算散列地址,根據該散列地址可以直接通過散列表找到處理邏輯。
[0029]進一步地,在基于散列表執行消息處理之前,預先建立散列表的步驟包括:預先建立消息條件和處理邏輯之間的對應關系;為所述消息條件生成散列地址;將所述消息條件對應的處理邏輯存儲在所述散列地址中,形成散列表。具體的,因為消息所承載的業務已知,那么通過分析可以知道消息中包含的消息條件,以及處理該消息應當使用的處理邏輯,所以準備各個類型的消息作為樣本,通過分析可以確定消息條件和處理邏輯之間的對應關系,進而在消息條件和處理邏輯之間建立對應關系。
[0030]下面以公眾號消息處理為例,來對本發明進行進一步地的描述。
[0031]公眾號消息處理例如是微信公眾號消息處理。如果是微信公眾號消息處理,則消息是由微信服務器發送到公眾號服務器上,再由公眾號服務器負責對該消息進行邏輯處理。例如:用戶關注了智能洗衣機微信公眾號,客戶端首先會發送消息到微信服務器,微信服務器再把這條消息轉發給智能洗衣機微信公眾號服務器。消息為xml形式,并通過超文本傳輸協議(HyperText Transfer Protocol,簡稱HTTP)發送的。
[0032]在服務器側定義條件生成接口和處理邏輯接口,并設置消息處理器。
[0033]條件生成接口,用于在消息處理器的控制下,在消息中查找消息條件,并為消息條件生成散列地址。消息條件可以通過Object f inderl =new f inder ()函數查找,其中finder I為消息條件,finder ()為查詢函數。可以通過函數算法hash (finder I)生成消息條件f inderl的散列地址,該散列地址為哈希hash值。
[0034]消息處理器,用于在消息條件finder I和處理邏輯1gi cl (msg)之間建立對應關系,在為消息條件生成的散列地址中存儲消息條件對應的處理邏輯。其中,msg表示消息。消息處理器為key-value結構,一個消息條件的散列地址對應一個處理邏輯,即放入key =f inderl,value = 1gicl。
[0035]處理邏輯接口,用于在消息處理器的控制下,對服務器接收到的消息執行邏輯處理。
[0036]將本發明分為兩個階段,下面對這兩個階段分別進行說明。
[0037]第一階段,創建散列表階段:
[0038]服務器接收到的消息的標準格式為:
[0039]<xml>
[0040]<ToUserName><![CDATA[toUser]]></ToUserName>
[0041 ] <FromUserName><![CDATA[fromUs er]]> </FromUs erName >
[0042]<CreateTime>1348831860</CreateTime>
[0043]〈MsgTypeX! [CDATA[text] ]></MsgType>
[0044]〈ContentX![CDATA[this is a test]]></Content>
[0045]<MsgId>1234567890123456</MsgId>
[0046]</xml>
[0047]在該消息格式中,包括MsgType(消息類型)和Event(事件類型),條件生成接口可以通過finder I =new finder (text),在消息中找到消息具體的消息類型和事件類型,并根據消息類型和事件類型生成散列地址。
[0048]例如:用戶關注了智能洗衣機微信公眾號,智能洗衣機微信公眾號服務器服務器接收到的消息如下:
[0049]<xml>
[0050]<ToUserName><![CDATA[toUser]]></ToUserName>[0051 ] <FromUserName><![CDATA[FromUser]]></FromUserName>
[0052]<CreateTime>123456789</CreateTime>
[0053]〈MsgTypeX! [CDATA[event] ]></MsgType>
[0054]<Event><![CDATA[subscribe]]></Event>
[0055]</xml>
[0056]基于該消息,條件生成接口通過如下方式找到消息條件:
[0057]f inderl =new f inder();
[0058]finderl.put(‘MsgType’,‘event,);
[0059]finderl.put(‘Event,‘subscribe);
[0000]經過查找,最終確定消息中的event和subscribe作為觸發處理邏輯的消息類型和事件類型。消息處理器調用條件生成接口將消息類型和事件類型組成字符串,并計算該字符串的hash值,作為散列地址。
[0061 ] 根據消息承載的業務,當消息中的MsgType (消息類型)為event,Event (事件類型)為subscribe時,使用處理邏輯subscribeLogic處理該消息。這時,消息處理器可以在消息條件(event和subscribe)和處理邏輯(subscribeLogic)建立對應關系。消息處理器在消息條件(event和subscribe)的散列地址中存儲處理邏輯(subscribeLogic)。
[0062]第二階段,消息處理階段
[0063]在散列表建立之后,服務器接收到消息,消息處理器根據Object f inder2 = newfinder (text)在消息中查找消息條件finder2,根據消息條件finder2生成散列地址,根據該散列地址,在散列表中查找消息條件finder2對應的處理邏輯,根據該處理邏輯對消息執行邏輯處理。
[0064]本發明提供了一種消息處理裝置。圖2是根據本發明一實施例的消息處理裝置的結構圖。
[0065]所述裝置包括:
[0066]查找模塊210,用于在接收到的消息中,查找消息條件。
[0067]獲取模塊220,用于獲取預先創建的散列表中,與所述消息條件對應的處理邏輯。
[0068]處理模塊230,用于根據所述處理邏輯,對所述消息執行邏輯處理。
[0069]所述裝置還包括創建模塊240;
[0070]創建模塊240,用于在查找模塊在接收到的消息中查找消息條件之前,預先創建所述散列表。創建模塊240,具體用于預先建立消息條件和處理邏輯之間的對應關系;為所述消息條件生成散列地址;將所述消息條件對應的處理邏輯存儲在所述散列地址中,形成散列表。
[0071]獲取模塊220,用于為查找到的所述消息條件生成散列地址;根據為查找到的所述消息條件生成的所述散列地址,在預先創建的散列表中獲取處理邏輯。即在預先創建的散列表中,獲取所述散列地址指向的處理邏輯。
[0072]所述消息條件包括:消息的屬性信息。所述屬性信息包括:消息類型和事件類型。
[0073]本實施例所述的裝置的功能已經在圖1所示的方法實施例中進行了描述,故本實施例的描述中未詳盡之處,可以參見前述實施例中的相關說明,在此不做贅述。
[0074]盡管為示例目的,已經公開了本發明的優選實施例,本領域的技術人員將意識到各種改進、增加和取代也是可能的,因此,本發明的范圍應當不限于上述實施例。
【主權項】
1.一種消息處理方法,其特征在于,包括: 在接收到的消息中,查找消息條件; 獲取預先創建的散列表中,與所述消息條件對應的處理邏輯; 根據所述處理邏輯,對所述消息執行邏輯處理。2.如權利要求1所述的方法,其特征在于,創建所述散列表,包括: 預先建立所述消息條件和所述處理邏輯之間的對應關系; 為所述消息條件生成散列地址; 將所述消息條件對應的所述處理邏輯存儲在所述散列地址中,形成散列表。3.如權利要求2所述的方法,其特征在于,所述獲取預先創建的散列表中,與所述消息條件對應的處理邏輯,包括: 為查找到的所述消息條件生成散列地址; 根據為查找到的所述消息條件生成的所述散列地址,在預先創建的散列表中獲取處理邏輯。4.如權利要求1-3中任一項所述的方法,其特征在于,所述消息條件包括:消息的屬性?目息O5.如權利要求4所述的方法,其特征在于,所述屬性信息包括:消息類型和事件類型。6.一種消息處理裝置,其特征在于,包括: 查找模塊,用于在接收到的消息中,查找消息條件; 獲取模塊,用于獲取預先創建的散列表中,與所述消息條件對應的處理邏輯; 處理模塊,用于根據所述處理邏輯,對所述消息執行邏輯處理。7.如權利要求6所述的裝置,其特征在于,所述裝置還包括創建模塊; 所述創建模塊,用于在所述查找模塊在接收到的消息中查找消息條件之前,預先創建所述散列表; 所述創建模塊,具體用于預先建立消息條件和處理邏輯之間的對應關系;為所述消息條件生成散列地址;將所述消息條件對應的處理邏輯存儲在所述散列地址中,形成散列表。8.如權利要求7所述的裝置,其特征在于,所述獲取模塊,用于: 為查找到的所述消息條件生成散列地址; 根據為查找到的所述消息條件生成的所述散列地址,在預先創建的散列表中獲取處理邏輯。9.如權利要求6-8中任一項所述的裝置,其特征在于,所述消息條件包括:消息的屬性?目息O10.如權利要求9所述的裝置,其特征在于,所述屬性信息包括:消息類型和事件類型。
【文檔編號】H04L12/58GK105933208SQ201610334730
【公開日】2016年9月7日
【申請日】2016年5月19日
【發明人】王毅, 高陽, 王曉燕
【申請人】青島海爾智能家電科技有限公司