消息队列中的消息处理方法

文档序号:7716256阅读:200来源:国知局
专利名称:消息队列中的消息处理方法
技术领域
本发明涉及数字电视领域,尤其是涉及应用于数字电视的消息队列中的消息处理方法。
背景技术
在当前数字电视软件开发中,一般用的都是基于多任务的消息处理方式。随着数 字电视系统的日益繁杂,需要处理的消息越来越多。通常,需要处理的消息以队列的形式维 持在系统中。目前处理消息的方式基本上是基于先入先出,逐个处理的方式。目前,消息的 属性表现为其处理状态属性消息的类型和消息数据,这些属性在消息被取出来处理时会 被使用。 消息的先入先出机制虽然十分"公平",但是无法应对一些突发的事件。例如当处 理消息的任务所占用的时间过长,处理任务来不及处理消息队列的消息,或者消息发送太 频繁的时候经常出现系统响应不及时,导致使用者的操作阻塞或者操作被丢失的情况。
还有可能在消息队列中存在的消息数量过长,某些对系统来说相对重要的消息被 前一个消息阻塞,中间状态被不断的处理,传统的清除队列的方法使得重要消息被清空。一 种解决方法是使用不同的消息队列管理不同类型或者不同重要程度的消息。但是多队列处 理的方式会丢失消息的先后逻辑顺序,给程序设计带来了复杂度和出错概率,提高了对程 序员设计多任务逻辑顺序的要求。

发明内容
因此,本发明的一个目的是提供一种消息队列中的消息处理方法,可以将许多消 息放入同一个消息队列中处理而不用担心消息被阻塞或者由于处理任务优先级的不同而 造成的逻辑问题。 本发明提供一种消息队列中的消息处理方法,包括以下步骤将消息放入一消息 队列中。为该消息分配生存属性和生存周期,且在该消息存在于该消息队列期间位置该生 存属性和生存周期,其中该生存属性确定消息进入消息队列时对消息队列中的其他消息产 生的影响,并确定消息在消息队列中所处的位置;该生存周期表示消息未被处理而存在于 该消息队列中的时间。根据该生存属性和该生存周期更新该消息队列。 在本发明的一实施例中,根据该消息的预定类型为该消息分配生存属性和生存周 期。 在本发明的-
响包括保留或清除。
在本发明的-
应清除的其他消息。
在本发明的-
排列消息顺序。
-实施例中,消息进入消息队列时对消息队列中的其他消息产生的影
-实施例中,更新该消息队列包括清除由当前消息的生存属性确定
-实施例中,更新该消息队列包括根据由当前消息的生存属性重新
在本发明的一实施例中,更新该消息队列包括根据维护的生存周期清除到期的 消息。 本发明由于采用以上技术方案,使之与现有技术相比,只使用一个消息队列来管 理消息,通过定义合适的生存属性和生存周期,可进行不同紧急程度和重要程度的消息管 理,从而可实现包括优先处理紧急消息、减轻系统消息负荷的一个或多个目标。


为让本发明的上述目的、特征和优点能更明显易懂,以下结合附图对本发明的具 体实施方式作详细说明,其中 图1示出根据本发明一实施例的消息队列中的消息处理机制。
图2示出消息队列中的消息生存属性和生存周期实例。
图3示出消息队列中的消息处理实例。
具体实施例方式
在下述的实施例中,为各种消息设定了生存属性,并可设定生存周期,来管理消息 队列中的消息。通过生存属性,可以使不同紧急程度的消息得到不同的对待,从而紧急的消 息能够得到优先的处理。并且,考虑到某些消息的频繁发送导致的阻塞,消息生存属性可设 置为对队列中的其他消息的生存产生影响。通过生存周期,某些长时间未得到处理的消息 可从队列中清除,以腾出队列空间。 在本发明的实施例中,消息的生存属性是指消息存在于消息队列中的属性。该属 性可决定消息进入消息队列时对队列中的其他消息产生的影响。该属性还可决定消息在消 息队列中所处的位置。消息在消息队列中的任何时候该属性都存在,当该消息被取出时,生 存属性可消失。举例来说,消息进入消息队列时对消息队列中的其他消息产生的影响可包 括保留消息和清除消息。保留消息可视为消息对其他消息没有影响。清除消息的对象可为 一个或多个消息。这些消息可能因为与当前消息在优先级上的不同、类型上的关联以及其 他因素而被删除。 消息的生存周期即消息在消息队列中的生存周期,它表示消息未被处理而存在于 该消息队列中的时间。当生存周期结束的时候,该消息如果还没有处理则会从消息队列中 清除。生存周期可为无限长,即永远不被自动清除。 通过使用消息的生存属性和生存周期,本发明的实施例可仅通过一个消息队列来 管理许多消息,而不必担心消息被阻塞或者由于处理任务优先级的不同而造成的逻辑问 题。 图1示出根据本发明一实施例的消息队列中的消息处理机制。在图1所示的处理 机制中,消息队列中维持有许多待处理的消息。当系统有新的消息时,在步骤S100,将消息 放入消息队列中。然后,在步骤S102,为该消息分配生存属性和生存周期。在此,可识别该 消息在系统环境中的不同类型,来为消息分配生存属性和生存周期。举例来说,相对重要的 消息的生存属性中,应可令该消息处在消息队列中较前的位置,而一般的消息的生存属性 则按照通常的规则,如先进先出来决定位置。类似的,相对重要的消息可具有较长的生存周 期。
4
在步骤S104,维持生存属性和生存周期,维持的时间为消息存在于消息队列期间。 当该消息被取出或删除时,生存属性可消失。 在步骤S106,更新消息队列。更新的步骤需要考虑的是当前进入的消息的生存属 性,以及消息队列中各消息的生存周期。例如,若当前消息的生存属性决定当前消息应当排 列到队列中较前的位置甚至首位,则在步骤S108重新排列消息顺序。再如,若当前消息的 生存属性决定应当清除队列中的一个或多个其他消息,则步骤S110执行这一操作。并且, 在步骤S112根据维护各个消息的生存周期清除到期的消息。这些步骤S108-S112并没有 特定的顺序,例如,步骤S112可独立于步骤S108和S110而定期的执行。
生存属性的定义是灵活的,针对系统中遇到的不同消息处理所带来问题,定义不 同消息的生存属性,两个不同生存属性的消息之间可能有影响,也有可能一个生存属性对 所有的消息都有影响。 图2示出消息队列中的消息生存属性和生存周期实例。在图2的实例中,定义了 六种不同的形状体,每个形状体代表一种生存属性或生存周期的消息。例如生存属性为的 flush—ke印J的消息进入队列且会冲掉生存属性为ke印J或flush—ke印J的消息。
Flush (冲刷)生存属性是经常能用到的一种属性,表明此类消息最后一个的有效 性最大,根据flush的范围可以设置flush—ke印j, flush_kee2等。 对于一些后台任务的消息,可以设置为带normal (普通)的带生存周期的消息,如
果在一定时刻没有得到处理,则自动清除,避免的过多的消息阻塞消息队列。 根据图2定义的消息的生存属性和生存周期,在各种不同的消息进入的状态下,
消息队列不断地进行更新。在状态1下,消息队列中有生存属性为normal的一个消息、生
存属性为always的一个消息、以及生存属性为ke印J的两个消息。当flush—ke印J消息
进入后,两个ke印J消息被清除,flush—ke印J消息排在最后。在第二个flush—ke印J
消息进入后,第一个flush—ke印J消息被清除。在500ms的生存周期后,normal消息被清
除。最后,flush—only消息进入后,排在最前,除always消息外,其他消息被清除。 可以理解,当对应消息越多时,恰当的定义不同消息的生存属性和生存周期,会很
好的减少系统处理消息的负荷。 同时可以看出,紧急消息得到了尽快的处理,特别是对应于一些用户操作的消息, 尽快的处理能提升用户的感受度。 并且,消息队列中具有了一定程度上的人工智能,对队列中的消息能有效管理,均 匀不同消息的载荷,例如flush—ke印J消息不管发的多频繁,在队列中始终只有一个。
在上例中,定义的所有消息都可以放在一个队列中,除了 flush—only之外,其他 的消息都不会影响队列中不同属性消息的先后顺序,有效的保证了逻辑上的安全。
下面再列举消息处理机制的多个应用例,以使本发明的精神更容易理解。
在一应用例中,数字电视机顶盒切台任务中,由用户遥控器按键触发切台,切台转 化为播放消息。当用户频繁切台的时候,如果每一个切台消息都需要处理的话,有的机顶盒 芯片播放电视是需要一定时间的,那么用户就会在停止按键后不断的看到切台操作不断进 行,直到达到用户最后一次按键的那个台。如果此时将播放消息改为first—only的话,那 么每次用户触发遥控器按键产生first—only的播放消息都会将消息队列中还未处理的播 放消息清除,将自己放在消息队列的前面,这样当用户停止按键的时候就不会看到频繁的切台操作,用户最后切的台能很快播放出来。 在另一应用例中,在切台过程中,会触发CA(Conditional Access)系统进行工作, CA系统作为另外一个任务也会针对当前切的节目向消息队列中发送CA相关的消息,这些 消息往往是一些需要显示的OSD消息,例如会先显示"节目未授权"消息,再显示"节目已授 权"消息,如果频繁切台的话,OSD会显示出许多的CA消息,如果将OSD消息改为生存属性为 flush—ke印J的消息的话,它能将之前的flush—ke印l的消息清除而又不会影响其他的消 息,同时当新的切台消息出现的时候又能将其全部清除,因为该消息只属于上次切的节目。
因为消息的生存属性是灵活定义的,可以根据应用的实际需求来设计,不同的生 存属性对应于消息在消息队列中存在的不同形态,进入的方式,对其它消息的影响以及在 队列中的排序方式都会有所不同,但是这些属性只要是在进入和存在于消息队列中的时间 内存在,而消息被取出后消失,那么它们都属于本发明所涉及的生存属性。
虽然本发明已以较佳实施例揭示如上,然其并非用以限定本发明,任何本领域技 术人员,在不脱离本发明的精神和范围内,当可作些许的修改和完善,因此本发明的保护范 围当以权利要求书所界定的为准。
权利要求
一种消息队列中的消息处理方法,包括以下步骤将消息放入一消息队列中;为该消息分配生存属性和生存周期,且在该消息存在于该消息队列期间位置该生存属性和生存周期,其中该生存属性确定消息进入消息队列时对消息队列中的其他消息产生的影响,并确定消息在消息队列中所处的位置;该生存周期表示消息未被处理而存在于该消息队列中的时间;根据该生存属性和该生存周期更新该消息队列。
2. 如权利要求1所述的方法,其特征在于,根据该消息的预定类型为该消息分配生存 属性和生存周期。
3. 如权利要求1所述的方法,其特征在于,消息进入消息队列时对消息队列中的其他 消息产生的影响包括保留或清除。4
4 如权利要求3所述的方法,其特征在于,更新该消息队列包括清除由当前消息的生 存属性确定应清除的其他消息。
5. 如权利要求3所述的方法,其特征在于,更新该消息队列包括根据由当前消息的生 存属性重新排列消息顺序。
6. 如权利要求1所述的方法,其特征在于,更新该消息队列包括根据维护的生存周期 清除到期的消息。
全文摘要
本发明提供一种消息队列中的消息处理方法,在该方法中,将消息放入一消息队列中,然后为该消息分配生存属性和生存周期,且在该消息存在于该消息队列期间位置该生存属性和生存周期,其中该生存属性确定消息进入消息队列时对消息队列中的其他消息产生的影响,并确定消息在消息队列中所处的位置;该生存周期表示消息未被处理而存在于该消息队列中的时间。最后,根据该生存属性和该生存周期更新该消息队列。应用该方法,可以将许多消息放入同一个消息队列中处理而不用担心消息被阻塞或者由于处理任务优先级的不同而造成的逻辑问题。
文档编号H04L12/56GK101753441SQ20091020063
公开日2010年6月23日 申请日期2009年12月24日 优先权日2009年12月24日
发明者顾亚平 申请人:上海全景数字技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1