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