專利名稱:一種處理操作請求的方法、裝置及業(yè)務系統(tǒng)的制作方法
技術領域:
本發(fā)明屬于計算機軟件領域,尤其涉及一種處理操作請求的方法、裝置及業(yè)務系統(tǒng)。
背景技術:
現有技術中,用戶響應的處理,大多是每次只能處理一個,有多個相應的情況下, 也是按照一定的規(guī)則進行排隊后處理,即串行處理。串行處理每次只能處理一個響應,若是有大量的項目需要進行處理,每個項目都需要一定時間去處理,這時,串行處理的速度就很慢,大大降低了效率。因此,引入了多線程的概念,即建立多個線程并行處理用戶的響應,能夠同步運行多項任務。然而,現行的多線程并不能有效地進行配置和調度,若并行運行的線程過少,則可能會造成后續(xù)任務的長期等待,若并行線程過多,則在任務不多時浪費資源,而使線程不能得到有效的動態(tài)配置。此外,在構建服務應用程序配置參數發(fā)生變化時,因無法有效地對線程進行動態(tài)配置,而需要重啟構建服務器應用程序時,不得不停止正在運行的任務,給用戶帶來極大不便,且大大影響了性能。
發(fā)明內容
本發(fā)明實施例的目的在于提供一種可動態(tài)構建線程的處理操作請求的方法,旨在解決不能動態(tài)地構建線程處理操作請求,且構建服務應用程序配置參數發(fā)生變化時,需要重啟構建服務器應用程序的問題。本發(fā)明實施例是這樣實現的,一種處理操作請求的方法,所述方法包括下述步驟構建服務器監(jiān)聽消息,所述消息為參數配置消息或者操作請求消息;當所述消息為參數配置消息時,根據參數配置消息對構建服務器進行相應的配置處理;當所述消息為操作請求消息時,根據操作請求消息的類型構建相應的線程處理所述操作請求消息。本發(fā)明實施例的另一目的在于提供一種處理操作請求的裝置,所述裝置包括監(jiān)聽單元,構建服務器監(jiān)聽消息,所述消息為參數配置消息或者操作請求消息;配置執(zhí)行單元,用于當所述消息為參數配置消息時,根據參數配置消息對構建服務器進行相應的配置處理;操作請求處理單元,用于當所述消息為操作請求消息時,根據操作請求消息的類型構建相應的線程處理所述操作請求消息。本發(fā)明實施例另一目的在于提供一種包含所述處理操作請求的裝置的業(yè)務系統(tǒng)。經由上述的技術方案可知,與現有技術相比,本發(fā)明一種處理操作請求的方法、裝置及業(yè)務系統(tǒng),通過同時接收配置參數消息及操作請求消息,并根據接收到的配置參數消息動態(tài)執(zhí)行配置操作的方法,能夠動態(tài)地、可配置地構建線程處理客戶端傳入的操作請求消息。當需要變化處理的任務時,可通過配置參數簡單實現,而不需要修改程序源代碼。且即使配置參數修改了也不需要重新啟動構建服務器,從而不會影響當前的工作任務,可見上述操作請求的處理方法即方便又靈活。且多線程并行執(zhí)行操作請求消息的方式,大大提高了執(zhí)行效率。同時,返回構建服務器狀態(tài)使得用戶能夠實時掌握構建服務器端線程及隊列的情況,并根據所接收到的構建服務器狀態(tài),更新配置參數后傳遞給構建服務器,以更好地實現線程及隊列的部署。
圖1是本發(fā)明第一實施例提供的處理操作請求的方法的流程圖;圖2是本發(fā)明第二實施例提供的處理操作請求的方法的流程圖;圖3是本發(fā)明第一實施例提供的構建線程的流程的流程圖;圖4是本發(fā)明第一實施例提供的線程處理構建請求的流程的流程圖;圖5是本發(fā)明實施例提供的處理操作請求的裝置的結構框圖。
具體實施例方式為了使本發(fā)明的目的、技術方案及優(yōu)點更加清楚明白,以下結合附圖及實施例,對本發(fā)明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。本發(fā)明實施例中,構建服務器通過接收由用戶端傳入的配置參數消息及客戶端傳入的操作請求消息,在接收配置參數消息后執(zhí)行配置處理來動態(tài)地、可配置地構建線程處理客戶端傳入的操作請求消息。所述方法包括構建服務器監(jiān)聽消息,所述消息為參數配置消息或者操作請求消息;當所述消息為參數配置消息時,根據參數配置消息對構建服務器進行相應的配置處理;當所述消息為操作請求消息時,根據操作請求消息的類型構建相應的線程處理所述操作請求消息。所述裝置包括監(jiān)聽單元,構建服務器監(jiān)聽消息,所述消息為參數配置消息或者操作請求消息;配置執(zhí)行單元,用于當所述息為參數配置消息時,根據參數配置消息對構建服務器進行相應的配置處理;操作請求處理單元,用于當所述消息為操作請求消息時,根據操作請求消息的類型構建相應的線程處理所述操作請求消息。為了說明本發(fā)明所述的技術方案,下面通過具體實施例來進行說明。實施例一圖1示出了本發(fā)明第一實施例提供的處理操作請求的方法的流程,詳述如下在步驟SlOl中,構建服務器監(jiān)聽消息,所述消息為參數配置消息或者操作請求消肩、ο
在本發(fā)明實施例中,所述消息可以為Socket消息、文件內容消息、數據庫消息、 內存消息、狀態(tài)變化等不同消息類型中的一種,通過監(jiān)聽可識別所述消息的類別。此處以 Socket消息為例來詳細說明其實現過程,但并不限于Socket消息。下面將以Socket消息為例說明此步驟的實現過程。在本發(fā)明實施例中,構建服務器首先構建一個監(jiān)聽程序和外界進行通信,通過監(jiān)聽程序接收用戶端傳入的配置參數消息和客戶端傳入的操作請求消息。在本發(fā)明實施例中,用戶端在接收到用戶啟動程序的請求后,啟動一個程序讀取配置文件,然后通過Socket連接到構建服務器,將配置參數消息傳給構建服務器。所述配置參數消息為構建服務器構建線程及處理操作的參考信息;而且所述配置參數消息可由用戶預先設置,例如用戶可設置并行線程最大數量、修改并行線程最大數量、增加構建隊列、 刪除構建隊列、構建服務器監(jiān)控信息等配置參數消息。在本發(fā)明實施例中,所述操作請求消息由客戶端傳入構建服務器。所述操作請求消息為客戶端需要構建服務器所執(zhí)行的操作的請求,如復制請求、刪除請求等。在步驟S102中,當所述消息為參數配置消息時,根據參數配置消息對構建服務器進行相應的配置處理。在本發(fā)明實施例中,所述配置參數消息包括但不限于設置并行線程最大數量、修改并行線程最大數量、增加構建隊列、刪除構建隊列、構建服務器監(jiān)控信息等消息。根據接收到的配置參數消息,執(zhí)行相應的配置處理,從而能夠動態(tài)地、可配置地構建線程處理客戶端傳入的操作請求消息。當需要變化處理的任務時,可通過配置參數簡單實現,而不需要修改程序源代碼,且即使修改了配置參數也不需要重新啟動構建服務器,從而不會影響當前的工作任務,可見上述操作請求的處理方法即方便又靈活。以下用五個例子來詳細闡述,但并不限于這五個例子。例如1、當接收到的配置參數消息是并行線程最大數量時,記錄所述最大數量值,將所述最大數量值作為收到客戶端發(fā)出的操作請求消息后判斷是否超過并行線程最大數量的參考值。2、當接收到的配置參數消息是創(chuàng)建緩存配置參數消息的隊列時,創(chuàng)建一個和配置參數消息類型相匹配的隊列,以用來緩存后續(xù)收到的配置參數消息。3、當所述參數配置消息為設置并行線程最大數量或者修改并行線程最大數量時, 將構建服務器中并行線程最大數量設置為指定值或者更新為指定值。4、當接收到的配置參數消息是增加或刪除相應的構建隊列時,執(zhí)行增加或刪除相應的構建隊列的配置操作。所述隊列用于緩存操作請求消息,且該隊列有多種類型,每種類型的隊列用于緩存相應類型的操作請求消息。5、當所述參數配置消息為查詢構建服務器狀態(tài)監(jiān)控信息時,檢測構建服務器的狀態(tài),并將構建服務器的狀態(tài)返回至查詢者。在本發(fā)明實施例中,構建服務器狀態(tài)返回主要是指構建服務器在運行當中線程及隊列的基本情況,如有多少個隊列、每類隊列的最大并行線程數量、每類隊列中有多少個等待執(zhí)行的任務、每類隊列有多少個正在執(zhí)行的線程等情況。這些值在監(jiān)聽程序中都用相應的對象來存放,線程在處理完構建任務后,會根據情況來更新這些對象的值,構建服務器的監(jiān)聽程序在收到狀態(tài)監(jiān)控消息時,就將這些值返回給相應的查詢者。在本發(fā)明實施例中,返回構建服務器狀態(tài)使得用戶能夠實時掌握構建服務器端線程及隊列的情況,并根據所接收到的構建服務器狀態(tài),更新配置參數后傳遞給構建服務器, 以更好地實現線程及隊列的部署。在步驟S103中,當所述消息為操作請求消息時,根據操作請求消息的類型構建相應的線程處理所述操作請求消息。在本發(fā)明實施例中,接收到的消息是操作請求消息時,構建相應線程處理操作請求消息,若接收到操作請求消息時,且正在運行的線程數超過了并行線程最大數量,則將操作請求消息放于隊列中。然后,根據操作請求消息類型的不同建立多個隊列,用于放置同一類等待處理的操作請求消息,例如等待處理的復制請求全部放置在一個隊列中,等待處理的粘貼請求全部放置在另一個隊列中。本步驟的具體實現詳見圖3及圖4,在此就不再贅述了。在本發(fā)明實施例中,通過同時接收配置參數消息及操作請求消息,并根據接收到的配置參數消息動態(tài)執(zhí)行配置操作的方法,能夠動態(tài)地、可配置地構建線程處理客戶端傳入的操作請求消息。當需要變化處理的任務時,可通過配置參數簡單實現,而不需要修改程序源代碼。且即使配置參數修改了也不需要重新啟動構建服務器,從而不會影響當前的工作任務,可見上述操作請求的處理方法即方便又靈活。且多線程并行執(zhí)行操作請求消息的方式,大大提高了執(zhí)行效率。實施例二 圖2示出了本發(fā)明第二實施例提供的處理操作請求的方法的流程,詳述如下在步驟S201中,構建服務器監(jiān)聽消息,所述消息為參數配置消息或者操作請求消息;在步驟S202中,構建服務器讀取消息格式配置文件,獲取參數配置消息的格式定義和操作請求消息的格式定義。在本發(fā)明實施例中,從消息格式配置文件中獲取參數配置消息和操作請求消息的格式定義,所述消息格式配置文件中存儲了配置參數消息和操作請求消息的格式定義。構建服務器在監(jiān)聽到消息后根據消息格式配置文件中的參數配置消息的格式定義和操作請求消息的格式定義將監(jiān)聽到的消息解析為參數配置消息或者操作請求消息。所述配置文件可以為文件、XML、Properties等格式的文檔。格式定義舉例如下para:[add|modify|delete]paraNameparaValuerequest[build|patch|output]:projectName其中,para: [add |modify | delete] :paraName:paraValue 是定義構建月艮務器需要的參數類型格式,para表示配置參數,add表示新增操作,modify表示修改操作,delete表示刪除操作。此處僅以這三種操作方式為例,并不限于這三種操作方式。在具體的配置消息中,從這三種操作方式中選取一種。paraName表示具體的參數名稱,paraValue表示具體的參數值。request: [build | patch | output] :projectName 是指業(yè)務請求類的消息,艮口具體要做什么事情。bui 1 d表示創(chuàng)建,patch表示補丁,output表示輸出,在本發(fā)明實施例中,僅以build、patch、output這三種類型的任務為例,但并不限于這三種。projectNam表示和業(yè)務任務相關聯的項目名稱。此格式定義是用正則表達式的方式來定義的,[]表示取值范圍,I表示或者,表示消息中字段值的分隔符。在本發(fā)明實施例中,配置參數消息和操作請求消息都按這種格式發(fā)送。在步驟S203中,當所述消息為參數配置消息時,根據參數配置消息對構建服務器進行相應的配置處理;在步驟S204中,當所述消息為操作請求消息時,根據操作請求消息的類型構建相應的線程處理所述操作請求消息。實施例三在本發(fā)明實施例中,當接收到操作請求消息時,根據操作請求消息類型定義獲取接收到的操作請求消息的類型,并根據操作請求消息的類型構建相應的線程處理操作請求消息。其中,根據操作請求消息的類型構建相應的線程處理操作請求消息的具體實現可分為兩個部分,一部分為根據操作請求消息的類型構建相應的線程;另一部分為構建線程處理操作請求消息。圖3示出了本發(fā)明實施例提供的根據操作請求消息的類型構建相應線程的流程, 如下所述在步驟S301中,判斷當前正在運行的線程數量是否超過并行線程最大數量,若是,則執(zhí)行步驟S302,否則執(zhí)行步驟S303,所述線程處理的操作請求與接收到的操作請求消息類型相同。在本發(fā)明實施例中,所述并行線程的最大數量從配置參數消息中獲得。將當前隊列中正在運行的線程數量與并行線程最大數量進行比較來判斷當前正在運行的線程數量是否超過并行線程最大數量,所述線程處理的操作請求與接收到的操作請求消息類型相同。在步驟S302中,將操作請求消息添加到相應類型的隊列中。在本發(fā)明實施例中,若當前正在運行的線程數量超過并行線程最大數量,則不能再建新的線程處理所述操作請求消息,因此只能將客戶端發(fā)出的操作請求消息添加到相應類型的隊列中。隊列根據操作請求消息類型的不同建立,用于放置等待處理的同一類型的操作請求消息。若當前接收到的操作請求消息為復制請求,但當前正在運行的用于處理復制請求的線程數量超過了并行線程最大數量,則將所述復制請求添加到所述用于放置等待處理的復制請求的隊列中。在步驟S303中,構建一個新的線程,并將當前正在運行的線程數量加一。在本發(fā)明實施例中,若當前正在運行的線程數量沒有超過設置并行構建線程最大數量,則構建一個新的線程處理客戶端發(fā)出的請求。并將當前正在運行的線程數量加一。以確保當前正在運行的線程數量正確。在本發(fā)明實施例中,線程構建好之后,開始處理構建請求,其詳細過程如下所述, 如圖4所示。在步驟S401中,處理當前的操作請求消息;在本發(fā)明實施例中,線程首先會處理構建服務器第一次創(chuàng)建所述線程時指定的操作請求消息。在步驟S402中,檢查用于存放與所述操作請求消息類型相同的操作請求消息的隊列是否為空,若是則執(zhí)行步驟S403,否則執(zhí)行步驟S404。在本發(fā)明實施例中,在處理完構建服務器第一次創(chuàng)建線程時指定的操作請求消息后,線程開始檢查隊列是否為空,即隊列中是否還有未處理完的操作請求消息,所述隊列用于存放與接收到的操作請求消息類型相同的操作請求消息。在步驟S403中,將當前正在運行的線程數量減一后退出。在本發(fā)明實施例中,若所述隊列為空,則線程將當前正在運行的構建線程數量減一后退出。在步驟S404中,從所述隊列中調用一個操作請求消息進行處理,同時將被調用的操作請求消息從所述隊列中刪除。然后返回執(zhí)行步驟S402。在本發(fā)明實施例中,直到線程檢查到隊列為空后將當前正在運行的線程數量減一后退出。實施例四圖5示出了本發(fā)明實施例提供的處理操作請求的裝置的結構,為了便于說明,僅示出了與本發(fā)明實施例相關的部份。該裝置可以是內置于業(yè)務系統(tǒng)中的軟件單元、硬件單元或者軟硬件相結合的單元,或者作為獨立的掛件集成到業(yè)務系統(tǒng)或業(yè)務系統(tǒng)的應用系統(tǒng)中。其中監(jiān)聽單元501,構建服務器用于監(jiān)聽消息,所述消息為參數配置消息或者操作請求消息。格式定義獲取單元502,構建服務器用于讀取消息格式配置文件,獲取參數配置消息的格式信息和操作請求消息的格式定義。配置執(zhí)行單元503,用于當所述消息為參數配置消息時,根據參數配置消息對構建服務器進行相應的配置處理。操作請求處理單元504,當所述消息為操作請求消息時,根據操作請求消息的類型構建相應的線程處理所述操作請求消息。在本發(fā)明實施例中,操作請求處理單元504又分為五個模塊,分別為隊列更新模塊505,用于在當前正在運行的線程數量超過并行線程最大數量時,將所述操作請求消息添加到相應類型的隊列中,所述線程處理的操作請求與接收到的操作請求消息類型相同;線程構建模塊506,用于在當前正在運行的線程數量未超過并行線程最大數量時, 構建一個新的線程,并將當前正在運行的線程數量加一,所述線程處理的操作請求與接收到的操作請求消息類型相同。當前請求處理模塊507,處理當前的操作請求消息。線程退出模塊508,用于當檢查到隊列為空時,將當前正在運行的線程數量減一后退出,所述隊列用于存放與接收到的操作請求消息類型相同的操作請求消息。操作請求處理模塊509,用于當檢查到隊列不為空時,從所述隊列中調用一個操作請求消息進行處理,同時將所述被調用的操作請求消息從所述隊列中刪除,所述隊列用于存放與接收到的操作請求消息類型相同的操作請求消息。
在本發(fā)明實施例中,通過同時接收配置參數消息及操作請求消息,并根據接收到的配置參數消息動態(tài)執(zhí)行配置操作的方法,能夠動態(tài)地、可配置地構建線程處理客戶端傳入的操作請求消息。當需要變化處理的任務時,可通過配置參數簡單實現,而不需要修改程序源代碼。且即使配置參數修改了也不需要重新啟動構建服務器,從而不會影響當前的工作任務,可見上述操作請求的處理方法即方便又靈活。且多線程并行執(zhí)行操作請求消息的方式,大大提高了執(zhí)行效率。同時,返回構建服務器狀態(tài)使得用戶能夠實時掌握構建服務器端線程及隊列的情況,并根據所接收到的構建服務器狀態(tài),更新配置參數后傳遞給構建服務器,以更好地實現線程及隊列的部署。本領域普通技術人員可以理解,實現上述實施例方法中的全部或部分步驟是可以通過程序來指令相關的硬件來完成,所述的程序可以在存儲于一計算機可讀取存儲介質中,所述的存儲介質,如ROM/RAM、磁盤、光盤等。以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內所作的任何修改、等同替換和改進等,均應包含在本發(fā)明的保護范圍之內。
權利要求
1.一種處理操作請求的方法,其特征在于,所述方法包括下述步驟構建服務器監(jiān)聽消息,所述消息為參數配置消息或者操作請求消息;當所述消息為參數配置消息時,根據參數配置消息對構建服務器進行相應的配置處理;當所述消息為操作請求消息時,根據操作請求消息的類型構建相應的線程處理所述操作請求消息。
2.如權利要求1所述的方法,其特征在于,在所述構建服務器監(jiān)聽消息的步驟之后,所述方法還包括下述步驟構建服務器讀取消息格式配置文件,獲取參數配置消息的格式定義和操作請求消息的格式定義;構建服務器根據消息格式配置文件中的參數配置消息的格式定義和操作請求消息的格式定義將監(jiān)聽到的消息解析為參數配置消息或者操作請求消息。
3.如權利要求1或2所述的方法,其特征在于,所述參數配置消息為設置并行線程最大數量、修改并行線程最大數量、增加構建隊列、刪除構建隊列、查詢構建服務器監(jiān)控信息中的一種或者多種組合。
4.如權利要求3所述的方法,其特征在于,所述根據參數配置消息對構建服務器進行相應的配置處理的步驟具體為當接收到的配置參數消息是并行線程最大數量時,記錄所述最大數量值,將所述最大數量值作為收到客戶端發(fā)出的操作請求消息后判斷是否超過并行線程最大數量的參考值;當接收到的配置參數消息是創(chuàng)建緩存配置參數消息的隊列時,創(chuàng)建一個和配置參數消息類型相匹配的隊列,以用來緩存后續(xù)收到的配置參數消息;當所述參數配置消息為設置并行線程最大數量或者修改并行線程最大數量時,將構建服務器中并行線程最大數量設置為指定值或者更新為指定值;當所述參數配置消息為增加構建隊列或者刪除構建隊列時,增加或者刪除指定的構建隊列;當所述參數配置消息為查詢構建服務器狀態(tài)監(jiān)控信息時,檢測構建服務器狀態(tài)并將構建服務器的狀態(tài)返回至查詢者。
5.如權利要求1所述的方法,其特征在于,所述根據操作請求消息的類型構建相應的線程處理所述操作請求消息的步驟具體為若當前正在運行的線程數量超過并行線程最大數量,則將所述操作請求消息添加到相應類型的隊列中,所述線程處理的操作請求與所述操作請求消息類型相同;若當前正在運行的線程數量未超過并行線程最大數量,則構建一個新的線程,并將當前正在運行的線程數量加一,所述線程處理的操作請求與所述操作請求消息類型相同。
6.如權利要求1所述的方法,其特征在于,所述根據操作請求消息的類型構建相應的線程處理所述操作請求消息的步驟具體為處理當前的操作請求消息;若檢查到隊列為空,則將當前正在運行的線程數量減一后退出,所述隊列用于存放與接收到的操作請求消息類型相同的操作請求消息;若檢查到隊列不為空,則從所述隊列中調用一個操作請求消息進行處理,同時將所述被調用的操作請求消息從所述隊列中刪除,然后返回執(zhí)行步驟處理當前的操作請求消息, 所述隊列用于存放與接收到的操作請求消息類型相同的操作請求消息。
7.—種處理操作請求的裝置,其特征在于,所述裝置包括監(jiān)聽單元,構建服務器監(jiān)聽消息,所述消息為參數配置消息或者操作請求消息;配置執(zhí)行單元,用于當所述消息為參數配置消息時,根據參數配置消息對構建服務器進行相應的配置處理;操作請求處理單元,用于當所述消息為操作請求消息時,根據操作請求消息的類型構建相應的線程處理所述操作請求消息。
8.如權利要求7所述的裝置,其特征在于,所述操作請求處理單元還包括隊列更新模塊,用于在當前正在運行的線程數量超過并行線程最大數量時,將所述操作請求消息添加到相應類型的隊列中,所述線程處理的操作請求與所述操作請求消息類型相同;線程構建模塊,用于在當前正在運行的線程數量未超過并行線程最大數量時,構建一個新的線程,并將當前正在運行的線程數量加一,所述線程處理的操作請求與所述操作請求消息類型相同。
9.如權利要求8所述的裝置,其特征在于,所述操作請求處理單元還包括當前請求處理模塊,處理當前的操作請求消息;線程退出模塊,用于當檢查到隊列為空時,將當前正在運行的線程數量減一后退出,所述隊列用于存放與接收到的操作請求消息類型相同的操作請求消息;操作請求處理模塊,用于當檢查到隊列不為空時,從所述隊列中調用一個操作請求消息進行處理,同時將所述被調用的操作請求消息從所述隊列中刪除,然后返回執(zhí)行步驟處理當前的操作請求消息,所述隊列用于存放與接收到的操作請求消息類型相同的操作請求消息。
10.一種業(yè)務系統(tǒng),其特征在于,所述系統(tǒng)包括權利要求7至9任一權利要求所述的處理操作請求的裝置。
全文摘要
本發(fā)明適用于計算機軟件領域,提供了一種處理操作請求的方法、裝置及業(yè)務系統(tǒng),該方法包括下述步驟構建服務器監(jiān)聽消息,所述消息為參數配置消息或者操作請求消息;當所述消息為參數配置消息時,根據參數配置消息對構建服務器進行相應的配置處理;當所述消息為操作請求消息時,根據操作請求消息的類型構建相應的線程處理所述操作請求消息。通過同時接收配置參數消息及操作請求消息,并根據接收到的配置參數消息動態(tài)執(zhí)行配置操作的方法,能夠動態(tài)地、可配置地構建線程處理客戶端傳入的操作請求消息。即使配置參數修改了也不需要重新啟動構建服務器,從而不會影響當前的工作任務,可見上述操作請求的處理方法即方便又靈活。
文檔編號G06F9/48GK102467412SQ20101054634
公開日2012年5月23日 申請日期2010年11月16日 優(yōu)先權日2010年11月16日
發(fā)明者劉繼平 申請人:金蝶軟件(中國)有限公司