專利名稱:一種消息隊列控制方法,及服務器的制作方法
技術領域:
本發明涉及通信技術領域,特別涉及一種消息隊列控制方法,及服務器。
背景技術:
在現今網絡時代,遠程控制與生活息息相關,人們可以通過網絡遠程控制各種設備。這種遠程控制系統一般稱為云臺控制系統。這種遠程控制系統通常包含至少一個客戶端與至少一個服務器以及若干受控設備。結構可以如圖I所示,圖I所示的有3個客戶端(客戶端I 客戶端3)、1個服務器以及3個受控設備(受控設備I 受控設備3)。需要說明的是,客戶端、服務器以及受控設備個數組合可能有很多,圖I所示不應理解為對本發明實施例的限定。
在現有云臺控制系統中,在多個客戶端需要同時對同一受控設備發起控制時,每個客戶端的發起的控制消息傳輸到服務器后,服務器將控制消息加入消息隊列,然后服務器從消息隊列中按序取出消息隊列中的控制消息發送給受控設備,受控設備執行該控制消息對應的指令。發明人在實現本發明實施例的過程中發現由于在當前的網絡條件下,會遇到多個客戶端同時對某受控設備發起控制或某個客戶端在較短時間內對某一受控設備發起較多控制的情況,導致服務器中的消息隊列中積累的控制消息隊列過長,進而導致服務器處理控制消息處理效率低的問題。
發明內容
本發明實施例提供了一種消息隊列控制方法,及服務器,用于減少消息隊列長度,提升服務器處理控制消息的處理效率。一種消息隊列控制方法,包括接收控制消息,并將所述控制消息添加到消息隊列;確定是否滿足預定的隊列優化條件,確定所述消息隊列中設定范圍內的控制消息是否屬于可合并的控制消息;若滿足預定的隊列優化條件,則對確定可合并的控制消息進行合并得到合并后的控制消息,并將所述消息隊列中可合并的控制消息替換為合并后的控制消息。一種服務器,包括消息接收單元,用于接收控制消息;消息存儲單元,用于將所述控制消息添加到消息隊列;條件確定單元,用于確定是否滿足預定的隊列優化條件;合并確定單元,用于確定所述消息隊列中設定范圍內的控制消息是否屬于可合并的控制消息;隊列控制單元,用于若滿足預定的隊列優化條件,則對確定可合并的控制消息進行合并得到合并后的控制消息,并將所述消息隊列中可合并的控制消息替換為合并后的控制消息。從以上技術方案可以看出,本發明實施例具有以下優點可以將控制消息隊列中的控制消息進行精簡,以減少消息隊列的長度,因而能夠提升服務器處理控制消息的處理效率。
為了更清楚地說明本發明實施例中的技術方案,下面將對實施例描述中所需要使用的附圖作簡要介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域的普通技術人員來講,在不付出創造性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。圖I為現有技術云臺系統結構示意圖;圖2為本發明實施例方法流程示意圖;圖3為本發明實施例另一方法流程示意圖;圖4為本發明實施例另一方法流程示意圖;圖5為本發明實施例服務器結構圖;圖6為本發明實施例另一服務器結構圖。
具體實施例方式為了使本發明的目的、技術方案和優點更加清楚,下面將結合附圖對本發明作進一步地詳細描述,顯然,所描述的實施例僅僅是本發明一部份實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其它實施例,都屬于本發明保護的范圍。本發明實施例提供了一種消息隊列控制方法,如圖2所示,包括201 :接收控制消息,并將上述控制消息添加到消息隊列;202:確定是否滿足預定的隊列優化條件,確定上述消息隊列中設定范圍內的控制消息是否屬于可合并的控制消息;上述202中預定的隊列優化條件可以有很多,該條件是用于控制優化方法啟動的條件,這個條件可以依據具體的環境進行設定,設定的方式很多,以下是一個舉例上述確定是否滿足預定的隊列優化條件包括確定服務器的狀態是否處于忙狀態,若是,則確定滿足預定的隊列優化條件。需要說明的是,上述舉例不應理解為對本發明實施例的唯一限定。上述可合并的控制消息可能有很多情況導致控制消息可以合并,以下給出了兩種具體的舉例上述確定上述消息隊列中設定范圍內的控制消息是否屬于可合并的控制消息包括確定上述消息隊列中設定范圍內的控制消息之間是否屬于逆操作,若屬于逆操作,則確定屬于可合并的控制消息;或者,上述確定上述消息隊列中設定范圍內的控制消息是否屬于可合并的控制消息包括確定上述消息隊列中設定范圍內的控制消息中至少兩個控制消息是否具有等效控制消息,若存在則確定屬于可合并的控制性消息。需要說明的是,以上兩個舉例并不是可合并的控制消息的全部可能,申請文件無法對此進行窮舉,因此以上舉例不應理解為對本發明實施例的唯一限定。上述設定范圍是用于對確定消息隊列優化的范圍,這個范圍可以是全部的消息隊、列也可以是其中的一部分,以下給出了兩種確定消息隊列優化的范圍的舉例上述設定范圍內的控制消息包括上述消息隊列中設定的到達時間段內的控制消息;或者,上述消息隊列中以設定起始位置的設定條數的控制消息。需要說明的是,確定消息隊列優化的范圍的方式還可以有很多,本發明實施例對此不予限定。進一步地,上述方法還包括確定控制消息的到達頻率是否高于預定值,若否,則確定使用的設定范圍內的控制消息為上述消息隊列中設定的到達時間段內的控制消息,若是,則確定使用的設定范圍內的控制消息為上述消息隊列中以設定起始位置的設定條數的控制消息。本實施例給出了優選確定消息隊列優化的范圍的實現舉例,需要說明的是啟用其他方式來確定優化范圍并不影響本發明實施例的實現。203 :若滿足預定的隊列優化條件,則對確定可合并的控制消息進行合并得到合并后的控制消息,并將上述消息隊列中可合并的控制消息替換為合并后的控制消息。
基于以上關于導致控制消息可以合并的舉例,本發明實施例還對應地給出了處理方案如下上述對確定可合并的控制消息進行合并得到合并后的控制消息,并將上述消息隊列中可合并的控制消息替換為合并后的控制消息包括刪除互為逆操作的控制消息;或者,上述對確定可合并的控制消息進行合并得到合并后的控制消息,并將上述消息隊列中可合并的控制消息替換為合并后的控制消息包括刪除具有等效控制消息的上述至少兩個控制消息,并將上述等效控制消息添加到上述消息隊列。采用以上方案,可以將控制消息隊列中的控制消息進行精簡,以減少消息隊列的長度,因而能夠提升服務器處理控制消息的處理效率。為了更形象的說明本發明實施例的效果,給出如下舉例在云臺控制系統,用戶有時需要取消之前的操作,并不希望操作執行,為了取消一個并不想要的操作,服務器需要處理兩次操作需取消的操作和取消操作(互為逆操作)。另舉例如用戶通過客戶端發送了多個控制消息,即使這些控制消息可以被一條控制消息所等效執行,按照目前的技術需要一條一條的執行。以上兩種情況在采用本發明實施例方案時,控制消息都會被縮短,具體地前一種直接刪掉了,后一種則多條控制消息被合并成了一條控制消息。因此采用本發明實施例可以減少消息隊列的長度,并能夠提升服務器處理控制消息的處理效率。本發明實施例的思路可以概括為對消息隊列中可以被合并的控制消息進行合并,以減少消息隊列中的控制消息的長度。更具體一點可以是在服務器處于忙碌狀態時,將新到來的控制消息首先存入緩存,在緩存中對消息隊列中未處理的控制消息進行優化精簡,減少消息隊列中的控制消息的數目。后續步驟則按照既定流程執行服務器的應用程序每次從緩存的消息隊列中取出一條位于消息隊列列首的控制消息進行處理。由于本發明實施例對消息隊列進行了精簡,可以減少服務器的處理量,以滿足及時處理消息的需求,提高控制消息的處理效率。以下對本發明實施例的實現進行舉例說明若定義云臺的受控設備和客戶端由云臺控制協議支持的操作(在消息隊列中體現為控制消息的指令)集合為E(如在云臺攝像頭控制中,支持的操作有向左、向右、向上、向下、打開光圈等操作)。則可以稱E為受控設備自有操作。E中的自有操作可能有不同的表現形式,如客戶端與服務器采用的是形式A,而服務器與受控設備采用的是形式B。(A是客戶端與服務器通訊協議支持的操作,B是服務器與受控設備進行通訊協議支持的操作)然而僅僅使用該操作集合,會有如下缺點。假設服務器忙碌時,用戶對攝像頭執行了向左移動一個單位的操作,而稍后用戶馬上想取消該操作(對攝像頭發起一個向右移動一個單位的操作)。由于服務器處于忙碌狀態,上述兩條消息均位于服務器中待處理消息隊列中。則等待一定時間后,服務器會與受控設備進行通訊執行上述兩條命令。然而實際上上述兩條操作并沒有具體改變攝像頭的狀態,因此相當于無效操作,但攝像頭卻實際執行了兩次操作。這兩個操作相互之間互為逆操作。針對上述缺點,本發明實施例可以首先定義可優化的情況如下可以定義一種特殊的操作集合F。F中的每條消息與E中的消息一一對應,且F中每條消息均可取消E中的對應一條消息。而F中的消息只在客戶端和服務器進行使用。因此F中的操作不會增加服務器與受控設備之間的數據流量。本發明實施例則可以僅涉及服務器與客戶端之間的操作集合G,該操作集合為E 和F的并集。首先可以定義可合并的操作,可合并的操作包括可逆操作和可結合操作。逆操作若操作集合中G中有操作01和操作02。若執行01,02后受控設備的狀態與執行01和02操作之前受控設備的狀態未發生變化。則稱這兩個操作互為逆操作;具體到控制消息則表現為兩個控制消息互為逆操作。可結合操作若操作集合中的操作01、02、03. . . On。若一次執行這η個操作后受控設備的狀態相當于執行了單個操作O之后的狀態相等。則認為這η個操作01、02、03. . . On個操作為可結合操作。而操作O為這η個可結合操作的等價操作也即為等效操作;具體到控制消息則為等效控制消息。針對上述缺點,本發明實施例還需要確定消息隊列中控制消息的優化范圍的規則如下此規則的主要出發點當一些控制消息迅速頻繁地到達,可以認為用戶并不關心中間某條控制消息的具體執行結果,僅關心一系列消息被執行的最終結果。因此規則可以有如下兩種形式I、消息隊列中設定的到達時間段內的控制消息。例如設定一個閾值時間Τ,若消息隊列中第一個控制消息到達的時間為Tl,則將第一個控制消息到到達時間小于Τ+Τ1的所有控制消息作為子隊列,這個子隊列中的控制消息即為可以進行精簡的范圍。2、消息隊列中以設定起始位置的設定條數的控制消息。例如設定一個閾值Q,將第一個控制消息到第Q個控制消息作為子隊列,這個子隊列中的控制消息即為可以進行精簡的范圍。基于以上的設定,本發明實施例給出了消息隊列優化精簡的方式如圖3所示。301 :取出消息隊列中以列首為列首的最長可優化的消息子隊列Q。取控制消息的方案可以參考前述確定消息隊列中控制消息的優化范圍的規則。302 :對Q進行優化精簡。精簡的方式是遍歷Q,確定Q中可結合操作集合,用可結合操作集合的等價操作替換上述可結合操作集合。遍歷Q,確定互為可逆操作的控制消息,將Q中的互為可逆操作的控制消息刪除。本實施例中,服務器維護兩個消息隊列一個消息隊列用于緩存消息隊列以便進行消息隊列的優化精簡操作。在此稱緩存消息隊列。緩存消息隊列中控制消息的添加、刪除、替換、更新、排序等操作可以自行定義。一般可以采用數組形式,因此緩存消息隊列的操作對應于數組的操作。如添加操作相當于在數組中添加一條控制消息。另一個消息隊列用于服務器與受控設備之間存放等待處理的消息隊列。在此稱應用程序消息隊列。程序消息隊列支持從消息隊列取出列首和將一條控制消息加入到消息隊列的隊尾。程序消息隊列可以使用視窗(windows)系統函數進行操作。如取消息(GetMessage)函數可以從消息隊列中取出一條控制消息并從消息隊列中刪除這條控制消息。信息發布(PostMessage)函數可以將一條控制消息加入到程序消息隊列的末尾。在消息隊列精簡完畢以后,控制消息的執行方式則可以按照既定流程執行月艮務器從消息隊列中取出一條控制消息,然后針對該控制消息采用相應的云臺控制協議與受控受控設備進行通訊并完成該控制消息對應的操作。本發明實施例并改變控制消息的執行流程,具有較好的兼容性。以下舉例為幾個本發明實施例的應用實例,如圖4所示步驟SlOl :服務器接收到客戶端的控制消息,也可以稱為操作請求信息,進入步 驟 S102。步驟S102 :服務器判斷自身是否處于空閑狀態,如果是,則直接將控制消息加入到應用程序消息隊列,進入S106,如果否,進入S103 ;步驟S103 :將控制消息添加到緩存消息隊列,進入S104 ;步驟S104 :對緩存消息隊列調用消息優化模塊進行優化精簡,得到更新后的消息緩存隊列,具體優化請參閱前述實施例,進入步驟S105 ;步驟S105 :從緩存消息隊列中取出一條控制消息添加到應用程序消息隊列隊尾,進入S106。步驟S106 :服務器從應用程序消息隊列取出位于列首的控制消息,進入S107。步驟S107 :服務器與受控設備采用云臺控制協議進行通訊兵執行該控制消息。本發明實施例還給出了在云臺攝像頭控制系統中的應用舉例可逆操作的例子云臺控制中某個操作E,其存在逆操作UE。即執行E后再執行UE操作,對系統未造成任何影響。比如向上移動一個單位和向下移動一個單位,這兩個操作互為逆操作。可結合操作某種操作El,與其可結合的操作為E2,E3,E4. . . En。即El到En操作以任何排列順序執行。對最終結果沒有影響,均相當于執行了操作E。比如向上移動I格和向右移動I格。這兩個操作的結合均相當于沿右上方向移動對角線長度。比如向上移動一個單位和向上移動一個單位,其最終操作相當于向上移動2個單位。整個系統假設有兩個客戶端需要向服務器s發起控制受控設備D的請求,分別記為第一客戶端A、第二客戶端B。某個時刻,服務器處于忙碌狀態,服務器中消息隊列中積累了有E1,E2,E3,E4,E5.五條控制消息。若A發送的EO E4幾乎同時到達,此處對時間的限制,主要是為了確認用戶只關心最終多條命令執行的最終結果,而不關心每條命令執行的具體結果。則按照本發明實施例提供的方案,處理順序如下首先處理E0,同時確認El與E4為逆操作;E2和E3可結合。則在執行完EO后,直接從消息隊列中刪除El和E4并返回這兩命令被正確執行的消息。然后執行E2和E3的結合操作E,E為向左上移動一對角線長度。需要執行兩條控制消息。若B發送的EO先到達,El E3隨后幾乎同時到達,E4最后到達。則采用本發明實施例的執行順序為E0,而后執行El,而后執行E (E2,E3組合的等價命令)。最后執行E4。需要執行四條控制消息。若不采取任何優化則執行順序為E0,El, E2,E3,E4。需要執行五條控制消息。因此采用本發明實施例方案可以減少控制消息的執行,提升服務器處理控制消息的處理效率。本發明實施例還提供了一種服務器,如圖5所示,包括消息接收單元501,用于接收控制消息; 消息存儲單元502,用于將上述控制消息添加到消息隊列;條件確定單元503,用于確定是否滿足預定的隊列優化條件;合并確定單元504,用于確定上述消息隊列中設定范圍內的控制消息是否屬于可合并的控制消息;隊列控制單元505,用于若滿足預定的隊列優化條件,則對確定可合并的控制消息進行合并得到合并后的控制消息,并將上述消息隊列中可合并的控制消息替換為合并后的控制消息。采用以上方案,可以將控制消息隊列中的控制消息進行精簡,以減少消息隊列的長度,因而能夠提升服務器處理控制消息的處理效率。可選地,預定的隊列優化條件可以有很多,該條件是用于控制優化方法啟動的條件,這個條件可以依據具體的環境進行設定,設定的方式很多,以下是一個舉例上述條件確定單元503,具體用于確定服務器的狀態是否處于忙狀態,若是,則確定滿足預定的隊列優化條件。可選地,上述可合并的控制消息可能有很多情況導致控制消息可以合并,以下給出了兩種具體的舉例合并確定單元504,具體用于確定上述消息隊列中設定范圍內的控制消息之間是否屬于逆操作,若屬于逆操作,則確定屬于可合并的控制消息;或者,具體用于確定上述消息隊列中設定范圍內的控制消息中至少兩個控制消息是否具有等效控制消息,若存在則確定屬于可合并的控制性消息;上述隊列控制單元505,具體用于若滿足預定的隊列優化條件,則除互為逆操作的控制消息;或者,刪除具有等效控制消息的上述至少兩個控制消息,并將上述等效控制消息添加到上述消息隊列。可選地,上述設定范圍是用于對確定消息隊列優化的范圍,這個范圍可以是全部的消息隊列也可以是其中的一部分,以下給出了兩種確定消息隊列優化的范圍的舉例上述合并確定單元504使用的設定范圍內的控制消息包括上述消息隊列中設定的到達時間段內的控制消息;或者,上述消息隊列中以設定起始位置的設定條數的控制消息。進一步地,如圖6所示,上述服務器還包括選擇單元601,用于確定控制消息的到達頻率是否高于預定值,若否,則確定使用的設定范圍內的控制消息為上述消息隊列中設定的到達時間段內的控制消息,若是,則確定使用的設定范圍內的控制消息為上述消息隊列中以設定起始位置的設定條數的控制消息。本實施例給出了優選確定消息隊列優化的范圍的實現舉例,需要說明的是啟用其他方式來確定優化范圍并不影響本發明實施例的實現。值得注意的是,上述服務器實施例中,所包括的各個單元只是按照功能邏輯進行劃分的,但并不局限于上述的劃分,只要能夠實現相應的功能即可;另外,各功能單元的具體名稱也只是為了便于相互區分,并不用于限制本發明的保護范圍。另外,本領域普通技術人員可以理解實現上述各方法實施例中的全部或部分步驟是可以通過程序來指令相關的硬件完成,相應的程序可以存儲于一種計算機可讀存儲介質中,上述提到的存儲介質可以是只讀存儲器,磁盤或光盤等。以上僅為本發明較佳的具體實施方式
,但本發明的保護范圍并不局限于此,任何熟悉本技術領域的技術人員在本發明實施例揭露的技術范圍內,可輕易想到的變化或替換,都應涵蓋在本發明的保護范圍之內。因此,本發明的保護范圍應該以權利要求的保護范 圍為準。
權利要求
1.一種消息隊列控制方法,其特征在于,包括 接收控制消息,并將所述控制消息添加到消息隊列; 確定是否滿足預定的隊列優化條件,確定所述消息隊列中設定范圍內的控制消息是否屬于可合并的控制消息; 若滿足預定的隊列優化條件,則對確定可合并的控制消息進行合并得到合并后的控制消息,并將所述消息隊列中可合并的控制消息替換為合并后的控制消息。
2.根據權利要求I所述方法,其特征在于,所述確定是否滿足預定的隊列優化條件包括確定服務器的狀態是否處于忙狀態,若是,則確定滿足預定的隊列優化條件。
3.根據權利要求I所述方法,其特征在于,所述確定所述消息隊列中設定范圍內的控制消息是否屬于可合并的控制消息包括確定所述消息隊列中設定范圍內的控制消息之間是否屬于逆操作,若屬于逆操作,則確定屬于可合并的控制消息;所述對確定可合并的控制消息進行合并得到合并后的控制消息,并將所述消息隊列中可合并的控制消息替換為合并后的控制消息包括刪除互為逆操作的控制消息;或者, 所述確定所述消息隊列中設定范圍內的控制消息是否屬于可合并的控制消息包括確定所述消息隊列中設定范圍內的控制消息中至少兩個控制消息是否具有等效控制消息,若存在則確定屬于可合并的控制性消息;所述對確定可合并的控制消息進行合并得到合并后的控制消息,并將所述消息隊列中可合并的控制消息替換為合并后的控制消息包括刪除具有等效控制消息的所述至少兩個控制消息,并將所述等效控制消息添加到所述消息隊列。
4.根據權利要求I至3任意一項所述方法,其特征在于,所述設定范圍內的控制消息包括 所述消息隊列中設定的到達時間段內的控制消息;或者,所述消息隊列中以設定起始位置的設定條數的控制消息。
5.根據權利要求4所述方法,其特征在于,還包括 確定控制消息的到達頻率是否高于預定值,若否,則確定使用的設定范圍內的控制消息為所述消息隊列中設定的到達時間段內的控制消息,若是,則確定使用的設定范圍內的控制消息為所述消息隊列中以設定起始位置的設定條數的控制消息。
6.一種服務器,其特征在于,包括 消息接收單元,用于接收控制消息; 消息存儲單元,用于將所述控制消息添加到消息隊列; 條件確定單元,用于確定是否滿足預定的隊列優化條件; 合并確定單元,用于確定所述消息隊列中設定范圍內的控制消息是否屬于可合并的控制消息; 隊列控制單元,用于若滿足預定的隊列優化條件,則對確定可合并的控制消息進行合并得到合并后的控制消息,并將所述消息隊列中可合并的控制消息替換為合并后的控制消息O
7.根據權利要求6所述服務器,其特征在于, 所述條件確定單元,具體用于確定服務器的狀態是否處于忙狀態,若是,則確定滿足預定的隊列優化條件。
8.根據權利要求6所述服務器,其特征在于, 合并確定單元,具體用于確定所述消息隊列中設定范圍內的控制消息之間是否屬于逆操作,若屬于逆操作,則確定屬于可合并的控制消息;或者,具體用于確定所述消息隊列中設定范圍內的控制消息中至少兩個控制消息是否具有等效控制消息,若存在則確定屬于可合并的控制性消息; 所述隊列控制單元,具體用于若滿足預定的隊列優化條件,則除互為逆操作的控制消息;或者,刪除具有等效控制消息的所述至少兩個控制消息,并將所述等效控制消息添加到所述消息隊列。
9.根據權利要求6至8任意一項所述服務器,其特征在于, 所述合并確定單元使用的設定范圍內的控制消息包括所述消息隊列中設定的到達時間段內的控制消息;或者,所述消息隊列中以設定起始位置的設定條數的控制消息。
10.根據權利要求9所述服務器,其特征在于,還包括 選擇單元,用于確定控制消息的到達頻率是否高于預定值,若否,則確定使用的設定范圍內的控制消息為所述消息隊列中設定的到達時間段內的控制消息,若是,則確定使用的設定范圍內的控制消息為所述消息隊列中以設定起始位置的設定條數的控制消息。
全文摘要
本發明實施例公開了一種消息隊列控制方法,及服務器,其中方法的實現包括用于接收控制消息,并將所述控制消息添加到消息隊列;確定是否滿足預定的隊列優化條件,確定所述消息隊列中設定范圍內的控制消息是否屬于可合并的控制消息;若滿足預定的隊列優化條件,則對確定可合并的控制消息進行合并得到合并后的控制消息,并將所述消息隊列中可合并的控制消息替換為合并后的控制消息。采用以上方案,可以將控制消息隊列中的控制消息進行精簡,以減少消息隊列的長度,因而能夠提升服務器處理控制消息的處理效率。
文檔編號H04L29/08GK102710749SQ201210133468
公開日2012年10月3日 申請日期2012年4月28日 優先權日2012年4月28日
發明者曾相宗 申請人:廣東威創視訊科技股份有限公司