一种消息队列控制方法,及服务器的制作方法

文档序号:7894803阅读:231来源:国知局
专利名称:一种消息队列控制方法,及服务器的制作方法
技术领域
本发明涉及通信技术领域,特别涉及一种消息队列控制方法,及服务器。
背景技术
在现今网络时代,远程控制与生活息息相关,人们可以通过网络远程控制各种设备。这种远程控制系统一般称为云台控制系统。这种远程控制系统通常包含至少一个客户端与至少一个服务器以及若干受控设备。结构可以如图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日
发明者曾相宗 申请人:广东威创视讯科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1