CN101753441A - 消息队列中的消息处理方法 - Google Patents
消息队列中的消息处理方法 Download PDFInfo
- Publication number
- CN101753441A CN101753441A CN200910200633A CN200910200633A CN101753441A CN 101753441 A CN101753441 A CN 101753441A CN 200910200633 A CN200910200633 A CN 200910200633A CN 200910200633 A CN200910200633 A CN 200910200633A CN 101753441 A CN101753441 A CN 101753441A
- Authority
- CN
- China
- Prior art keywords
- message
- queue
- message queue
- life cycle
- attribute
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
本发明提供一种消息队列中的消息处理方法,在该方法中,将消息放入一消息队列中,然后为该消息分配生存属性和生存周期,且在该消息存在于该消息队列期间位置该生存属性和生存周期,其中该生存属性确定消息进入消息队列时对消息队列中的其他消息产生的影响,并确定消息在消息队列中所处的位置;该生存周期表示消息未被处理而存在于该消息队列中的时间。最后,根据该生存属性和该生存周期更新该消息队列。应用该方法,可以将许多消息放入同一个消息队列中处理而不用担心消息被阻塞或者由于处理任务优先级的不同而造成的逻辑问题。
Description
技术领域
本发明涉及数字电视领域,尤其是涉及应用于数字电视的消息队列中的消息处理方法。
背景技术
在当前数字电视软件开发中,一般用的都是基于多任务的消息处理方式。随着数字电视系统的日益繁杂,需要处理的消息越来越多。通常,需要处理的消息以队列的形式维持在系统中。目前处理消息的方式基本上是基于先入先出,逐个处理的方式。目前,消息的属性表现为其处理状态属性:消息的类型和消息数据,这些属性在消息被取出来处理时会被使用。
消息的先入先出机制虽然十分“公平”,但是无法应对一些突发的事件。例如当处理消息的任务所占用的时间过长,处理任务来不及处理消息队列的消息,或者消息发送太频繁的时候经常出现系统响应不及时,导致使用者的操作阻塞或者操作被丢失的情况。
还有可能在消息队列中存在的消息数量过长,某些对系统来说相对重要的消息被前一个消息阻塞,中间状态被不断的处理,传统的清除队列的方法使得重要消息被清空。一种解决方法是使用不同的消息队列管理不同类型或者不同重要程度的消息。但是多队列处理的方式会丢失消息的先后逻辑顺序,给程序设计带来了复杂度和出错概率,提高了对程序员设计多任务逻辑顺序的要求。
发明内容
因此,本发明的一个目的是提供一种消息队列中的消息处理方法,可以将许多消息放入同一个消息队列中处理而不用担心消息被阻塞或者由于处理任务优先级的不同而造成的逻辑问题。
本发明提供一种消息队列中的消息处理方法,包括以下步骤:将消息放入一消息队列中。为该消息分配生存属性和生存周期,且在该消息存在于该消息队列期间位置该生存属性和生存周期,其中该生存属性确定消息进入消息队列时对消息队列中的其他消息产生的影响,并确定消息在消息队列中所处的位置;该生存周期表示消息未被处理而存在于该消息队列中的时间。根据该生存属性和该生存周期更新该消息队列。
在本发明的一实施例中,根据该消息的预定类型为该消息分配生存属性和生存周期。
在本发明的一实施例中,消息进入消息队列时对消息队列中的其他消息产生的影响包括保留或清除。
在本发明的一实施例中,更新该消息队列包括:清除由当前消息的生存属性确定应清除的其他消息。
在本发明的一实施例中,更新该消息队列包括:根据由当前消息的生存属性重新排列消息顺序。
在本发明的一实施例中,更新该消息队列包括:根据维护的生存周期清除到期的消息。
本发明由于采用以上技术方案,使之与现有技术相比,只使用一个消息队列来管理消息,通过定义合适的生存属性和生存周期,可进行不同紧急程度和重要程度的消息管理,从而可实现包括优先处理紧急消息、减轻系统消息负荷的一个或多个目标。
附图说明
为让本发明的上述目的、特征和优点能更明显易懂,以下结合附图对本发明的具体实施方式作详细说明,其中:
图1示出根据本发明一实施例的消息队列中的消息处理机制。
图2示出消息队列中的消息生存属性和生存周期实例。
图3示出消息队列中的消息处理实例。
具体实施方式
在下述的实施例中,为各种消息设定了生存属性,并可设定生存周期,来管理消息队列中的消息。通过生存属性,可以使不同紧急程度的消息得到不同的对待,从而紧急的消息能够得到优先的处理。并且,考虑到某些消息的频繁发送导致的阻塞,消息生存属性可设置为对队列中的其他消息的生存产生影响。通过生存周期,某些长时间未得到处理的消息可从队列中清除,以腾出队列空间。
在本发明的实施例中,消息的生存属性是指消息存在于消息队列中的属性。该属性可决定消息进入消息队列时对队列中的其他消息产生的影响。该属性还可决定消息在消息队列中所处的位置。消息在消息队列中的任何时候该属性都存在,当该消息被取出时,生存属性可消失。举例来说,消息进入消息队列时对消息队列中的其他消息产生的影响可包括保留消息和清除消息。保留消息可视为消息对其他消息没有影响。清除消息的对象可为一个或多个消息。这些消息可能因为与当前消息在优先级上的不同、类型上的关联以及其他因素而被删除。
消息的生存周期即消息在消息队列中的生存周期,它表示消息未被处理而存在于该消息队列中的时间。当生存周期结束的时候,该消息如果还没有处理则会从消息队列中清除。生存周期可为无限长,即永远不被自动清除。
通过使用消息的生存属性和生存周期,本发明的实施例可仅通过一个消息队列来管理许多消息,而不必担心消息被阻塞或者由于处理任务优先级的不同而造成的逻辑问题。
图1示出根据本发明一实施例的消息队列中的消息处理机制。在图1所示的处理机制中,消息队列中维持有许多待处理的消息。当系统有新的消息时,在步骤S100,将消息放入消息队列中。然后,在步骤S102,为该消息分配生存属性和生存周期。在此,可识别该消息在系统环境中的不同类型,来为消息分配生存属性和生存周期。举例来说,相对重要的消息的生存属性中,应可令该消息处在消息队列中较前的位置,而一般的消息的生存属性则按照通常的规则,如先进先出来决定位置。类似的,相对重要的消息可具有较长的生存周期。
在步骤S104,维持生存属性和生存周期,维持的时间为消息存在于消息队列期间。当该消息被取出或删除时,生存属性可消失。
在步骤S106,更新消息队列。更新的步骤需要考虑的是当前进入的消息的生存属性,以及消息队列中各消息的生存周期。例如,若当前消息的生存属性决定当前消息应当排列到队列中较前的位置甚至首位,则在步骤S108重新排列消息顺序。再如,若当前消息的生存属性决定应当清除队列中的一个或多个其他消息,则步骤S110执行这一操作。并且,在步骤S112根据维护各个消息的生存周期清除到期的消息。这些步骤S108-S112并没有特定的顺序,例如,步骤S112可独立于步骤S108和S110而定期的执行。
生存属性的定义是灵活的,针对系统中遇到的不同消息处理所带来问题,定义不同消息的生存属性,两个不同生存属性的消息之间可能有影响,也有可能一个生存属性对所有的消息都有影响。
图2示出消息队列中的消息生存属性和生存周期实例。在图2的实例中,定义了六种不同的形状体,每个形状体代表一种生存属性或生存周期的消息。例如生存属性为的flush_keep_1的消息进入队列且会冲掉生存属性为keep_1或flush_keep_1的消息。
Flush(冲刷)生存属性是经常能用到的一种属性,表明此类消息最后一个的有效性最大,根据flush的范围可以设置flush_keep_1,flush_kee2等。
对于一些后台任务的消息,可以设置为带normal(普通)的带生存周期的消息,如果在一定时刻没有得到处理,则自动清除,避免的过多的消息阻塞消息队列。
根据图2定义的消息的生存属性和生存周期,在各种不同的消息进入的状态下,消息队列不断地进行更新。在状态1下,消息队列中有生存属性为normal的一个消息、生存属性为always的一个消息、以及生存属性为keep_1的两个消息。当flush_keep_1消息进入后,两个keep_1消息被清除,flush_keep_1消息排在最后。在第二个flush_keep_1消息进入后,第一个flush_keep_1消息被清除。在500ms的生存周期后,normal消息被清除。最后,flush_only消息进入后,排在最前,除always消息外,其他消息被清除。
可以理解,当对应消息越多时,恰当的定义不同消息的生存属性和生存周期,会很好的减少系统处理消息的负荷。
同时可以看出,紧急消息得到了尽快的处理,特别是对应于一些用户操作的消息,尽快的处理能提升用户的感受度。
并且,消息队列中具有了一定程度上的人工智能,对队列中的消息能有效管理,均匀不同消息的载荷,例如flush_keep_1消息不管发的多频繁,在队列中始终只有一个。
在上例中,定义的所有消息都可以放在一个队列中,除了flush_only之外,其他的消息都不会影响队列中不同属性消息的先后顺序,有效的保证了逻辑上的安全。
下面再列举消息处理机制的多个应用例,以使本发明的精神更容易理解。
在一应用例中,数字电视机顶盒切台任务中,由用户遥控器按键触发切台,切台转化为播放消息。当用户频繁切台的时候,如果每一个切台消息都需要处理的话,有的机顶盒芯片播放电视是需要一定时间的,那么用户就会在停止按键后不断的看到切台操作不断进行,直到达到用户最后一次按键的那个台。如果此时将播放消息改为first_only的话,那么每次用户触发遥控器按键产生first_only的播放消息都会将消息队列中还未处理的播放消息清除,将自己放在消息队列的前面,这样当用户停止按键的时候就不会看到频繁的切台操作,用户最后切的台能很快播放出来。
在另一应用例中,在切台过程中,会触发CA(Conditional Access)系统进行工作,CA系统作为另外一个任务也会针对当前切的节目向消息队列中发送CA相关的消息,这些消息往往是一些需要显示的OSD消息,例如会先显示“节目未授权”消息,再显示“节目已授权”消息,如果频繁切台的话,OSD会显示出许多的CA消息,如果将OSD消息改为生存属性为flush_keep_1的消息的话,它能将之前的flush_keep1的消息清除而又不会影响其他的消息,同时当新的切台消息出现的时候又能将其全部清除,因为该消息只属于上次切的节目。
因为消息的生存属性是灵活定义的,可以根据应用的实际需求来设计,不同的生存属性对应于消息在消息队列中存在的不同形态,进入的方式,对其它消息的影响以及在队列中的排序方式都会有所不同,但是这些属性只要是在进入和存在于消息队列中的时间内存在,而消息被取出后消失,那么它们都属于本发明所涉及的生存属性。
虽然本发明已以较佳实施例揭示如上,然其并非用以限定本发明,任何本领域技术人员,在不脱离本发明的精神和范围内,当可作些许的修改和完善,因此本发明的保护范围当以权利要求书所界定的为准。
Claims (6)
1.一种消息队列中的消息处理方法,包括以下步骤:
将消息放入一消息队列中;
为该消息分配生存属性和生存周期,且在该消息存在于该消息队列期间位置该生存属性和生存周期,其中该生存属性确定消息进入消息队列时对消息队列中的其他消息产生的影响,并确定消息在消息队列中所处的位置;该生存周期表示消息未被处理而存在于该消息队列中的时间;
根据该生存属性和该生存周期更新该消息队列。
2.如权利要求1所述的方法,其特征在于,根据该消息的预定类型为该消息分配生存属性和生存周期。
3.如权利要求1所述的方法,其特征在于,消息进入消息队列时对消息队列中的其他消息产生的影响包括保留或清除。
4.如权利要求3所述的方法,其特征在于,更新该消息队列包括:清除由当前消息的生存属性确定应清除的其他消息。
5.如权利要求3所述的方法,其特征在于,更新该消息队列包括:根据由当前消息的生存属性重新排列消息顺序。
6.如权利要求1所述的方法,其特征在于,更新该消息队列包括:根据维护的生存周期清除到期的消息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910200633A CN101753441A (zh) | 2009-12-24 | 2009-12-24 | 消息队列中的消息处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910200633A CN101753441A (zh) | 2009-12-24 | 2009-12-24 | 消息队列中的消息处理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101753441A true CN101753441A (zh) | 2010-06-23 |
Family
ID=42479868
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910200633A Pending CN101753441A (zh) | 2009-12-24 | 2009-12-24 | 消息队列中的消息处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101753441A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103428581A (zh) * | 2013-09-04 | 2013-12-04 | 青岛海信宽带多媒体技术有限公司 | 电视节目播放方法及播放装置 |
CN104023414A (zh) * | 2013-12-20 | 2014-09-03 | 深圳市道通科技有限公司 | 蓝牙设备管理的方法及装置 |
CN105812928A (zh) * | 2014-12-30 | 2016-07-27 | 深圳Tcl新技术有限公司 | 提示消息显示的管理方法及显示设备 |
CN107147562A (zh) * | 2017-04-27 | 2017-09-08 | 腾讯科技(深圳)有限公司 | 消息处理方法和装置 |
CN108701281A (zh) * | 2016-02-22 | 2018-10-23 | 微软技术许可有限责任公司 | 上下文通知引擎 |
-
2009
- 2009-12-24 CN CN200910200633A patent/CN101753441A/zh active Pending
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103428581A (zh) * | 2013-09-04 | 2013-12-04 | 青岛海信宽带多媒体技术有限公司 | 电视节目播放方法及播放装置 |
CN103428581B (zh) * | 2013-09-04 | 2018-04-27 | 青岛海信宽带多媒体技术有限公司 | 电视节目播放方法及播放装置 |
CN108111907A (zh) * | 2013-09-04 | 2018-06-01 | 青岛海信宽带多媒体技术有限公司 | 电视节目播放方法 |
CN108111907B (zh) * | 2013-09-04 | 2020-06-16 | 青岛海信宽带多媒体技术有限公司 | 电视节目播放方法 |
CN104023414A (zh) * | 2013-12-20 | 2014-09-03 | 深圳市道通科技有限公司 | 蓝牙设备管理的方法及装置 |
CN104023414B (zh) * | 2013-12-20 | 2017-11-24 | 深圳市道通科技股份有限公司 | 蓝牙设备管理的方法及装置 |
CN105812928A (zh) * | 2014-12-30 | 2016-07-27 | 深圳Tcl新技术有限公司 | 提示消息显示的管理方法及显示设备 |
CN108701281A (zh) * | 2016-02-22 | 2018-10-23 | 微软技术许可有限责任公司 | 上下文通知引擎 |
CN107147562A (zh) * | 2017-04-27 | 2017-09-08 | 腾讯科技(深圳)有限公司 | 消息处理方法和装置 |
CN107147562B (zh) * | 2017-04-27 | 2018-09-14 | 腾讯科技(深圳)有限公司 | 消息处理方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101753441A (zh) | 消息队列中的消息处理方法 | |
CN106547612B (zh) | 一种多任务处理方法及装置 | |
US20200133750A1 (en) | Methods, apparatus and computer programs for managing persistence | |
US10397161B2 (en) | Electronic mail (email) message lifecycle management | |
CN108319495B (zh) | 任务处理方法及装置 | |
US7707464B2 (en) | Timeout request scheduling using grouping and nonsynchronized processing to enhance performance | |
CN110231995B (zh) | 一种基于Actor模型的任务调度方法、装置及存储介质 | |
CN103067597B (zh) | 移动终端开机任务执行方法 | |
CN110990142A (zh) | 并发任务处理方法、装置、计算机设备和存储介质 | |
CN107092533A (zh) | 基于ActiveMQ+Redis的同步消息队列 | |
US20070256075A1 (en) | Method, system, and memory for scheduling and cancelling tasks | |
KR101857510B1 (ko) | 소팅 | |
CN110737606B (zh) | 内存回收处理方法、装置、电子设备以及存储介质 | |
CN111258774A (zh) | 流程处理方法、装置、计算机设备及存储介质 | |
CN106330766A (zh) | 一种消息发送方法及装置 | |
US7950011B2 (en) | Leveraging advanced queues to implement event based job scheduling | |
Zhou et al. | Petri net model with fuzzy timing and fuzzy‐metric temporal logic | |
CN113098854B (zh) | 任务编排方法、系统、存储介质和电子设备 | |
CN110413210B (zh) | 用于处理数据的方法、设备和计算机程序产品 | |
CN109885613A (zh) | 集群化数据规则处理方法 | |
US8949859B2 (en) | Event-driven application systems and methods | |
CN107783843B (zh) | 一种云数据的处理方法及装置 | |
CN114461353A (zh) | 调整线程优先级的方法、终端及计算机可读存储介质 | |
CN115617788B (zh) | 一种制品清理方法、装置及计算机可读存储介质 | |
CN103995743A (zh) | 基于资源预约的两级混合任务调度方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20100623 |