消息队列管理方法和装置的制作方法

文档序号:6463828阅读:103来源:国知局
专利名称:消息队列管理方法和装置的制作方法
技术领域
本发明涉及嵌入式系统领域,并且特别地,涉及一种消息队列 管理方法和装置。
背景技术
由于消息队列具有传递不同长度的消息、且消息边界不需用户 管理的特点,所以很多嵌入式设备的任务间都采取消息队列的方式 进行通信。
然而,采用消息队列进行通信的情况下,在创建消息队列的时 候必须指定该消息队列中存放消息的最大值,并且,如果消息数已 经达到最大值,再向该消息队列发送消息就会返回失败信息。在消 息数达到最大值的情况下,必须等到接收消息的任务取走消息使消 息队列内消息数量小于最大值时,发送任务才会发送成功。
由于考虑到系统的资源的有效利用率和消息的时效性等问题, 消息队列的容量不能过大。但是,如果消息队列容量小,就容易出 现队列满的情况,导致上述发送消息失败的问题,而且有时一个消 息要发几次甚至几十次才能发送成功,乂人而引起系统资源的大量浪 费,降低了系统处理消息的能力。
然而,针对消息队列满所导致的向队列发送消息失败的问题, 目前尚未^是出有效的解决方案。

发明内容
考虑到上述问题而做出本发明,为此,本发明的主要目的在于 提供一种消息队列管理机制,以解决相关技术中消息队列很易满因 此导致的向队列发送消息失败的问题。
才艮据本发明的实施例,才是供了 一种消息队列管理方法。
该方法包括设置消息队列中消息数的一个或多个阈值;根据 阈值调整用于接收消息队列中消息的消息接收任务的优先级。
其中,设置的阈值包括发送阈值和接收阈值,其中,发送阈值 大于接收阈值。
并且,根据发送阈值和接收阈值调整消息接收任务的优先级的 处理具体为在消息队列中消息数大于发送阈值的情况下,根据预 定规则提高消息接收任务的优先级;或者在消息队列中消息数小于 接收阈值的情况下,将消息接收任务的优先级降低至其原始优先级。
另一方面,在^f又设置一个阈值的情况下,调整消息4妻收任务的 优先级的处理具体为在消息队列中消息数大于阈值的情况下,根 据预定规则提高消息接收任务的优先级;或者在消息队列中消息数 小于阈值的情况下,将消息接收任务的优先级降低至其原始优先级。
根据本发明的另 一 实施例,提供了 一种消息队列管理装置。
该装置包括设置模块,用于设置消息队列中消息数的一个或 多个阈值;调整模块,用于根据阈值调整用于接收消息队列中消息 的消息接收任务的优先级。
5其中,由设置模块设置的阈值包括发送阈值和接收阈值,其中, 发送阈值大于接收阈值。
并且,调整模块根据发送阈值和接收阈值调整消息接收任务的
优先级的处理具体为在消息队列中消息数大于发送阈值的情况下, 调整模块根据预定规则提高消息接收任务的优先级;或者在消息队 列中消息数小于接收阈值的情况下,调整模块将消息接收任务的优 先级降低至其原始优先级。
另一方面,在设置模块仅设置一个阈值的情况下,调整模块调 整消息接收任务的优先级的处理具体为在消息队列中消息数大于 阈值的情况下,调整^t块根据预定规则提高消息接收任务的优先级; 或者在消息队列中消息数小于阈值的情况下,调整模块将消息接收 任务的优先级降低至其原始优先级。
通过本发明的上述技术方案,能够提高消息发送成功率,减少 消息重发给系统带来的性能降低,减少应答超时从而提高了系统的 响应速度,l是高了嵌入式系统消息处理能力。


此处所说明的附图用来冲是供对本发明的进一步理解,构成本申 请的一部分,本发明的示意性实施例及其说明用于解释本发明,并 不构成对本发明的不当限定。在附图中
图1是根据本发明方法实施例的消息队列管理方法的流程图2是根据本发明方法实施例的方法中提高消息接收任务优先 级的处理流,呈图;图3是根据本发明方法实施例的方法中降低消息接收任务优先 级的处理流禾呈图;以及
图4是才艮据本发明装置实施例的消息队列管理装置的框图。
具体实施例方式
方法实施例
在本实施例中,提供了一种消息队列管理方法。以解决由于嵌 入式系统中由于消息队列满而形成的消息发送失败从而导致了系统 处理消息能力降低的问题。
如图1所示,才艮据本实施例的消息队列管理方法包括步骤 S102,设置消息队列中消息数的一个或多个阈值;步骤S104,根据 阈值调整用于接收消息队列中消息的消息接收任务的优先级。
在仅设置一个阈值的情况下,调整消息接收任务的优先级的处 理具体为在消息队列中消息数大于阈值的情况下,根据预定规则 提高消息接收任务的优先级;或者在消息队列中消息数小于阈值的 情况下,将消息接收任务的优先级降低至其原始优先级。
另外,还可以设置多个阈值,包括发送阈值和4妄收阈值,其 中,发送阈值大于接收阈值。
并且,根据发送阈值和接收阈值调整消息接收任务的优先级的 处理具体为在消息队列中消息数大于发送阈值的情况下,根据预 定规则提高消息接收任务的优先级;或者在消息队列中消息数小于 接收阈值的情况下,将消息接收任务的优先级降低至其原始优先级。 通过设置这两个阈值,不仅能够有效避免消息队列满导致发送失败, 而且能够避免频繁切换任务的优先级。在提高消息接收任务的优先级时,采用的预定规则可以是预先 定义的任务优先级调整方法。用于提高超过发送阀值的消息队列对
应的4妄4欠4壬务4尤先级,并且可以#4居4壬务原来的<尤先级和消息队列 的消息数来判断把任务提高到哪个优先级。
图2示出了提高消息接收任务优先级的处理流程。
如图2所示,具体包括以下处理
(1 )获取消息队列的消息数;
(2 )判断消息数是否超过发送阈值,在判断为是的情况下执行 步骤(3),否则执行步骤(4);
(3 )提高接收任务的优先级,并执行步骤(4 );
(4)将消息发送到消息队列。
图3示出了降4氐消息队列优先级的处理。
如图3所示,首先需要判断消息数是否小于接收阈值,在判断 为是的情况下,判断消息接收任务的优先级是否被提高,如果该消 息接收任务的优先级被提高了 ,则将消息接收任务的优先级降低为 提高前的原始优先级,并且不得低于原始优先级。
下面将以设置两个阈值的情况为例详细描述本发明的处理过程。
在实际应用当中,具体可以包4舌以下处理过禾呈
(1 )首先定义阀值,阀值的i殳定应该满足下面条件 0<M 1 <M2<MAXNUM;Ml为4妄收阀值,M2为发送阀值,MAXNUM为消息队列长度。 Ml、 M2之间的差值可以防止频繁切换4壬务的优先级。并且,Ml 和M2可以是消息队列中消息数所占消息队列总长度的比例,例如, 可以—寻MH殳置为60%,—寻M2i殳置为80%。
(2)定义一个优先级计算函数。
int taskPriorityCount
(
inttid, /* 4妄收消息4壬务ID */
intmsgNum /*消息卩人列消息凄史*/
(3 )定义修改任务发送消息的方法,具体如下
i) 获耳又消息队列Ql的消息教tNum;
ii) 比较tNum和M2;
iii) 如果tNum〉M2则调用taskPriorityCount计算并才是高Ql对 应的接收任务T1的优先级;
iv) 调用发送消息函数发送消息。
(4 )修改任务接收消息的方法,具体如下
i) 获取消息队列Ql的消息数rNum;
ii) 比较rNum和Ml;iii) 如果rNum<Ml且Ql对应的接收任务Tl的优先级不等于 原始优先级则降低任务的优先级到原始优先级;
iv) 调用接收消息函数接收消息。 装置实施例
在本实施例中,提供了一种消息队列管理装置。
如图4所示,根据本实施例的消息队列管理装置包括设置模 块402,用于设置消息队列中消息数的一个或多个阈值;调整模块 404,用于根据阈值调整用于接收消息队列中消息的消息接收任务的 优先级。
其中,由设置模块402设置的阈值包括发送阈值和接收阈值, 其中,发送阈值大于接收阈值。
并且,调整模块404根据发送阈值和接收阈值调整消息接收任 务的优先级的处理具体为在消息队列中消息数大于发送阈值的情 况下,调整模块404根据预定规则提高消息接收任务的优先级;或 者在消息队列中消息数小于接收阈值的情况下,调整模块将消息接 收任务的优先级降低至其原始优先级。
另一方面,在设置模块402仅设置一个阈值的情况下,调整模 块404调整消息接收任务的优先级的处理具体为在消息队列中消 息数大于阈值的情况下,调整模块404根据预定规则提高消息接收 任务的优先级;或者在消息队列中消息lt小于阈值的情况下,调整 模块404将消息接收任务的优先级降低至其原始优先级。综上所述,借助于本发明的技术方案,能够简单地根据消息队 列的消息数改变任务的优先级,提高消息发送成功率,减少了消息 重发给系统带来的性能降低,减少了应答超时从而提高了系统的响 应速度,提高了嵌入式系统消息处理能力。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明, 对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在 本发明的精神和原则之内,所作的任何修改、等同替换、改进等, 均应包含在本发明的保护范围之内。
权利要求
1.一种消息队列管理方法,其特征在于,包括设置消息队列中消息数的一个或多个阈值;根据所述阈值调整用于接收所述消息队列中消息的消息接收任务的优先级。
2. 根据权利要求1所述的方法,其特征在于,设置的所述阈值包 括发送阈值和接收阈值,其中,所述发送阈值大于所述接收阈 值。
3. 根据权利要求2所述的方法,其特征在于,根据所述发送阈值 和所述接收阈值调整所述消息4妄收任务的优先级的处理具体 为在所述消息队列中消息数大于所述发送阈值的情况下,根 据预定规则提高所述消息接收任务的优先级;或者在所述消息队列中消息数小于所述接收阈值的情况下,将 所述消息接收任务的优先级降低至其原始优先级。
4. 根据权利要求1所述的方法,其特征在于,在仅设置一个阈值 的情况下,调整所述消息接收任务的优先级的处理具体为在所述消息队列中消息数大于所述阈值的情况下,根据预 定规则提高所述消息接收任务的优先级;或者在所述消息队列中消息数小于所述阈值的情况下,将所述 消息接收任务的优先级降低至其原始优先级。
5. —种消息队列管理装置,其特征在于,包括设置模块,用于设置消息队列中消息数的 一个或多个阈值;调整模块,用于根据所述阔值调整用于接收所述消息队列 中消息的消息接收任务的优先级。
6. 根据权利要求5所述的装置,其特征在于,由所述设置模块设 置的所述阈值包括发送阈值和接收阈值,其中,所述发送阈值 大于所述接收阈值。
7. 根据权利要求6所述的装置,其特征在于,所述调整模块根据 所述发送阈值和所述接收阈值调整所述;肖息接收任务的优先 级的处理具体为在所述消息队列中消息数大于所述发送阈值的情况下,所 述调整模块根据预定规则提高所述消息接收任务的优先级;或 者在所述消息队列中消息数小于所述接收阈值的情况下,所 述调整模块将所述消息接收任务的优先级降低至其原始优先 级。
8. 根据权利要求5所述的装置,其特征在于,在所述设置模块仅 设置一个阈值的情况下,所述调整才莫块调整所述消息接收任务 的优先级的处理具体为在所述消息队列中消息数大于所述阈值的情况下,所述调 整模块根据预定规则提高所述消息接收任务的优先级;或者在所述消息队列中消息数小于所述阈值的情况下,所述调 整模块将所述消息接收任务的优先级降低至其原始优先级。
全文摘要
本发明公开了一种消息队列管理方法和装置,其中,该方法包括步骤S102,设置消息队列中消息数的一个或多个阈值;步骤S104,根据阈值调整用于接收消息队列中消息的消息接收任务的优先级。通过使用本发明,能够提高消息发送成功率,减少消息重发给系统带来的性能降低,减少应答超时从而提高了系统的响应速度,提高了嵌入式系统消息处理能力。
文档编号G06F11/14GK101599987SQ20081011126
公开日2009年12月9日 申请日期2008年6月5日 优先权日2008年6月5日
发明者陈锦威 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1