队列消息处理方法及终端设备转让专利

申请号 : CN201710879900.1

文献号 : CN107766160B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李斌丁明珠

申请人 : 平安科技(深圳)有限公司

摘要 :

本发明适用于数据处理技术领域,提供了队列消息处理方法及终端设备。该方法包括:设置运行队列和等待队列;获取运行队列中的未处理消息,根据运行队列中的未处理消息计算运行队列的当前负载度;根据运行队列的当前负载度判断运行队列中的未处理消息是否超过运行队列的当前限度;在运行队列中的未处理消息未超过运行队列的当前限度时,将等待入列的队列消息存储至运行队列中;在运行队列中未处理消息超过运行队列的当前限度时,将等待入列的队列消息存储至等待队列中。上述队列消息处理方法及终端设备,能够提高消息的实时性,淘汰时间较久的数据,提高消息传输的效率。

权利要求 :

1.一种队列消息处理方法,其特征在于,包括:

设置运行队列和等待队列,所述运行队列基于分布式文档存储数据库的固定集合构建,所述等待队列基于分布式文档存储数据库的无界集合构建;

获取运行队列中的未处理消息,根据预设负载和所述未处理消息占用的负载,计算所述运行队列的当前负载度;

根据所述运行队列的当前负载度判断所述运行队列中的未处理消息是否超过所述运行队列的当前限度;

在所述运行队列中的未处理消息未超过所述运行队列的当前限度时,将等待入列的队列消息存储至所述运行队列中;其中,将等待入列的队列消息存储至所述运行队列中后,所述运行队列的当前负载度增加;

在所述运行队列中的未处理消息超过所述运行队列的当前限度时,将等待入列的队列消息存储至等待队列中;

其中,所述根据所述运行队列的当前负载度判断所述运行队列中的未处理消息是否超过所述运行队列的当前限度为:计算所述运行队列的当前限度: 其中A为所述运行队列可容纳的消息容量,B为预设的平均消息大小,C为预设的负载度比例阀值;

在 大于所述运行队列的当前负载度时,判定所述运行队列中的未处理消息未超过所述运行队列的当前限度;

在 小于等于所述运行队列的当前负载度时,判定所述运行队列中的未处理消息超过所述运行队列的当前限度。

2.如权利要求1所述的队列消息处理方法,其特征在于,还包括:在所述运行队列中未处理消息未超过所述运行队列的当前限度且所述等待队列中存在队列消息时,将所述等待队列中的队列消息存储至所述运行队列中。

3.如权利要求1或2所述的队列消息处理方法,其特征在于,还包括:监测所述队列消息在所述运行队列中的时间、所述队列消息的入队耗时信息、所述队列消息的出队耗时信息和所述队列消息的大小,并生成日志文件进行存储。

4.一种队列消息处理终端设备,其特征在于,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如下步骤:设置运行队列和等待队列,所述运行队列基于分布式文档存储数据库的固定集合构建,所述等待队列基于分布式文档存储数据库的无界集合构建;

获取运行队列中的未处理消息,根据预设负载和所述未处理消息占用的负载,计算所述运行队列的当前负载度;

根据所述运行队列的当前负载度判断所述运行队列中的未处理消息是否超过所述运行队列的当前限度;

在所述运行队列中的未处理消息未超过所述运行队列的当前限度时,将等待入列的队列消息存储至所述运行队列中;其中,将等待入列的队列消息存储至所述运行队列中后,所述运行队列的当前负载度增加;

在所述运行队列中的未处理消息超过所述运行队列的当前限度时,将等待入列的队列消息存储至等待队列中;

其中,所述根据所述运行队列的当前负载度判断所述运行队列中的未处理消息是否超过所述运行队列的当前限度为:计算所述运行队列的当前限度: 其中A为所述运行队列可容纳的消息容量,B为预设的平均消息大小,C为预设的负载度比例阀值;

在 大于所述运行队列的当前负载度时,判定所述运行队列中的未处理消息未超过所述运行队列的当前限度;

在 小于等于所述运行队列的当前负载度时,判定所述运行队列中的未处理消息超过所述运行队列的当前限度。

5.如权利要求4所述的队列消息处理终端设备,其特征在于,所述处理器执行所述计算机程序时还实现如下步骤:监测所述队列消息在所述运行队列中的时间、所述队列消息的入队耗时信息、所述队列消息的出队耗时信息和所述队列消息的大小,并生成日志文件进行存储。

6.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至3任一项所述方法的步骤。

说明书 :

队列消息处理方法及终端设备

技术领域

[0001] 本发明属于数据处理技术领域,尤其涉及队列消息处理方法及终端设备。

背景技术

[0002] 消息队列用于在消息的传输过程中保存消息,传统的消息队列采用“先进先出”或“后进先出”的方式实现消息的入列和出列。而对于大量的消息需要传输处理时,传统的消息队列由于需要周期性等待查询队列的状态,因此导致效率较低,消息转发的实时性较差。

发明内容

[0003] 有鉴于此,本发明实施例提供了队列消息处理方法及终端设备,以解决现有技术中由于需要周期性等待查询队列的状态导致效率较低、实时性较差的问题。
[0004] 本发明实施例的第一方面提供了一种队列消息处理方法,包括:
[0005] 设置运行队列和等待队列,所述运行队列基于分布式文档存储数据库的固定集合构建,所述等待队列基于分布式文档存储数据库的无界集合构建;
[0006] 获取运行队列中的未处理消息,根据所述运行队列中的未处理消息计算所述运行队列的当前负载度,所述运行队列基于分布式文档存储数据库的固定集合构建;
[0007] 根据所述运行队列的当前负载度判断所述运行队列中的未处理消息是否超过所述运行队列的当前限度;
[0008] 在所述运行队列中的未处理消息未超过所述运行队列的当前限度时,将等待入列的队列消息存储至所述运行队列中;其中,将等待入列的队列消息存储至所述运行队列中后,所述运行队列的当前负载度增加;
[0009] 在所述运行队列中的未处理消息超过所述运行队列的当前限度时,将等待入列的队列消息存储至等待队列中;所述等待队列基于分布式文档存储数据库的无界集合构建;
[0010] 其中,所述根据所述运行队列的当前负载度判断所述运行队列中的未处理消息是否超过所述运行队列的当前限度为:
[0011] 计算所述运行队列的当前限度: 其中A为所述运行队列可容纳的消息容量,B为预设的平均消息大小,C为预设的负载度比例阀值;
[0012] 在 大于所述运行队列的当前负载度时,判定所述运行队列中的未处理消息未超过所述运行队列的当前限度;
[0013] 在 小于等于所述运行队列的当前负载度时,判定所述运行队列中的未处理消息超过所述运行队列的当前限度。
[0014] 可选的,所述根据所述运行队列中的未处理消息计算运行队列的当前负载度为:
[0015] 根据预设负载和所述未处理消息占用的负载,计算所述运行队列的当前负载度。
[0016] 可选的,所述队列消息处理方法还包括:
[0017] 在所述运行队列中未处理消息未超过所述运行队列的当前限度且所述等待队列中存在队列消息时,将所述等待队列中的队列消息存储至所述运行队列中。
[0018] 可选的,所述队列消息处理方法还包括:
[0019] 监测所述队列消息在所述运行队列中的时间、所述队列消息的入队耗时信息、所述队列消息的出队耗时信息和所述队列消息的大小,并生成日志文件进行存储。
[0020] 本发明实施例的第二方面提供了一种队列消息处理终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如下步骤:
[0021] 设置运行队列和等待队列,所述运行队列基于分布式文档存储数据库的固定集合构建,所述等待队列基于分布式文档存储数据库的无界集合构建;
[0022] 获取运行队列中的未处理消息,根据所述运行队列中的未处理消息计算所述运行队列的当前负载度,所述运行队列基于分布式文档存储数据库的固定集合构建;
[0023] 根据所述运行队列的当前负载度判断所述运行队列中的未处理消息是否超过所述运行队列的当前限度;
[0024] 在所述运行队列中的未处理消息未超过所述运行队列的当前限度时,将等待入列的队列消息存储至所述运行队列中;其中,将等待入列的队列消息存储至所述运行队列中后,所述运行队列的当前负载度增加;
[0025] 在所述运行队列中的未处理消息超过所述运行队列的当前限度时,将等待入列的队列消息存储至等待队列中;所述等待队列基于分布式文档存储数据库的无界集合构建;
[0026] 其中,所述根据所述运行队列的当前负载度判断所述运行队列中的未处理消息是否超过所述运行队列的当前限度为:
[0027] 计算所述运行队列的当前限度: 其中A为所述运行队列可容纳的消息容量,B为预设的平均消息大小,C为预设的负载度比例阀值;
[0028] 在 大于所述运行队列的当前负载度时,判定所述运行队列中的未处理消息未超过所述运行队列的当前限度;
[0029] 在 小于等于所述运行队列的当前负载度时,判定所述运行队列中的未处理消息超过所述运行队列的当前限度。
[0030] 可选的,所述根据所述运行队列中的未处理消息计算运行队列的当前负载度为:
[0031] 根据预设负载和所述未处理消息占用的负载,计算所述运行队列的当前负载度。
[0032] 可选的,所述处理器执行所述计算机程序时还实现如下步骤:
[0033] 在所述运行队列中未处理消息未超过所述运行队列的当前限度且所述等待队列中存在队列消息时,将所述等待队列中的队列消息存储至所述运行队列中。
[0034] 可选的,所述处理器执行所述计算机程序时还实现如下步骤:
[0035] 监测所述队列消息在所述运行队列中的时间、所述队列消息的入队耗时信息、所述队列消息的出队耗时信息和所述队列消息的大小,并生成日志文件进行存储。
[0036] 本发明实施例的第三方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上述队列消息处理方法的步骤。
[0037] 本发明实施例与现有技术相比存在的有益效果是:本发明实施例,获取运行队列中的未处理消息,根据所述运行队列中的未处理消息计算所述运行队列的当前负载度,在所述运行队列中的未处理消息未超过所述运行队列的当前限度时,将等待入列的队列消息存储至所述运行队列中,在所述运行队列中未处理消息超过所述运行队列的当前限度时,将等待入列的队列消息存储至等待队列中,通过设置运行队列和等待队列引入“生产者-消费者”模型,当队列消息无法入列时,先暂存至等待队列,而运行队列基于分布式文档存储数据库的固定集合构建,能够实现高效的查询、更新,从而能够提高消息的实时性,淘汰时间最久的数据,提高消息传输的效率。

附图说明

[0038] 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0039] 图1是本发明实施例提供的队列消息处理方法的实现流程图;
[0040] 图2是本发明实施例提供的运行队列的结构示意图;
[0041] 图3是图1中步骤S103的实现流程图;
[0042] 图4是本发明实施例提供的队列消息处理程序的运行环境示意图;
[0043] 图5是本发明实施例提供的队列消息处理程序的功能模块图。

具体实施方式

[0044] 以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。
[0045] 为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
[0046] 实施例一
[0047] 图1示出了本发明实施例一提供的队列消息处理方法的实现流程,详述如下:
[0048] 步骤S101,设置运行队列和等待队列,所述运行队列基于分布式文档存储数据库的固定集合构建,所述等待队列基于分布式文档存储数据库的无界集合构建。
[0049] 本实施例中,通过MONGODB(分布式文档存储数据库)的固定集合构建运行队列。如图2所示,所述运行队列为环形队列,当环形队列的空间用完后,再插入的队列消息就会覆盖最初始的队列消息。图2中,所述运行队列的第一个队列消息对应的数值为5,第二个队列消息对应的数值为-3,第三个队列消息对应的数值为17,第四个队列消息对应的数值为-9,第N个队列消息对应的数值为56,N为正整数。另外,对等待队列的结构不做限制。
[0050] 其中,设置运行队列和等待队列两种队列能够方便对后续信息的处理,具体参照后续步骤的相关内容。
[0051] 步骤S102,获取运行队列中的未处理消息,根据所述运行队列中的未处理消息计算所述运行队列的当前负载度。
[0052] 作为一种可实施方式,步骤S102中的所述根据所述运行队列中的未处理消息计算所述运行队列的当前负载度具体可以为:根据预设负载和所述未处理消息占用的负载,计算所述运行队列的当前负载度。
[0053] 具体的,在队列系统启动阶段,会预先对运行队列的预设负载进行设置,对运行队列的当前负载度进行计算。系统启动阶段或运行阶段预先增加或减少负载度,一方面可用于分布式文档存储数据库的MQ服务启动后的可用性验证,另一方面也可防止不可预知的特殊原因导致的负载度计算异常,因此增加或减少负载度可让系统进行适度的自我微调。
[0054] 可以理解的,在消息入队时,运行队列的当前负载度会相应的增加,例如,在原值的基础上加1;在消息出队时,运行队列的当前负载度将相应的降低,例如,在原值的基础上减1。在运行队列的当前负载度小于或等于零时,将不会向分布式文档存储数据库提交查询请求,以节约资源。
[0055] 在步骤S102之前,还可以包括:启动分布式文档存储数据库的MQ服务,包括参数加载、参数刷新和任务重调,其中具体的参数可以包括:队列消息长度上限、队列消息容量、消息出队任务线程数、出队任务首次延迟、出队任务执行周期、悲观出队持续时间、负载度比例阈值、入队时间上限、出队时间上限、是否开启监控等。
[0056] 本实施例中,参数信息可以存储于关系型数据库ORACLE中,每隔固定时间,根据表中记录的更新时间和更新人字段来计算当前配置信息记录的版本,一旦发现版本发生变化,将会重载参数以保证参数得到线程安全的刷新。
[0057] 步骤S103,根据所述运行队列的当前负载度判断所述运行队列中的未处理消息是否超过所述运行队列的当前限度。
[0058] 可以理解的,由于基于分布式文档存储数据库的固定集合构建运行队列,先入列的消息可能会被覆盖,所以为了防止后入列的消息覆盖未被处理的消息,所以在入列前需要判断所述运行队列中是否存在过多的消息未被处理。
[0059] 参见图3,步骤S103可以通过以下过程实现:
[0060] 步骤S301,计算 其中A为所述运行队列可容纳的消息容量,B为预设的平均消息大小,C为预设的负载度比例阀值。
[0061] 其中,所述平均消息大小根据mongo的集合的统计信息得出,而在无数据的情况下,所述平均消息大小等于队列消息长度上限。所述预设的负载度比例阀值具体可以根据实际情况或经验或实验数据进行设置,对此不做限定。
[0062] 步骤S302,判定 是否大于所述运行队列的当前负载度。
[0063] 具体的,若 大于所述运行队列的当前负载度,则执行步骤S303;若小于等于所述运行队列的当前负载度,则执行步骤S304。
[0064] 步骤S303,判定所述运行队列中的未处理消息未超过所述运行队列的当前限度。
[0065] 其中,未超过所述运行队列的当前限度表示所述运行队列中的未处理消息还未达到限度,等待入列的队列消息还可继续存储至所述运行队列中。
[0066] 步骤S304,判定所述运行队列中的未处理消息超过所述运行队列的当前限度。
[0067] 其中,超过所述运行队列的当前限度表示所述运行队列中的未处理消息过多,超出了所述运行队列的可承受限度。
[0068] 步骤S104,在所述运行队列中的未处理消息未超过所述运行队列的当前限度时,将等待入列的队列消息存储至所述运行队列中。
[0069] 其中,将等待入列的队列消息存储至所述运行队列中后,所述运行队列的当前负载度增加。具体的,可以增加预设数值,例如1;也可以根据入列的队列消息增加对应的数值,例如与队列消息的大小、长度等相关的数值。
[0070] 步骤S105,在所述运行队列中的未处理消息超过所述运行队列的当前限度时,将等待入列的队列消息存储至等待队列中。
[0071] 其中,通过设置运行队列和等待队列引入“生产者-消费者”模型,当队列消息无法入列时,先将队列消息暂存至等待队列,然后可以在运行队列的负载度较低时,优先将暂存在等待队列中的队列消息入列。
[0072] 可选的,上述队列消息处理方法还可以包括:
[0073] 在所述运行队列中未处理消息未超过所述运行队列的当前限度且所述等待队列中存在队列消息时,将所述等待队列中的队列消息存储至所述运行队列中。
[0074] 具体的,在所述运行队列中未处理消息未超过所述运行队列的当前限度且所述等待队列中存在队列消息时,由于所述等待队列中的队列消息相对等待时间较长,因此可以优先将在所述等待队列中存储的队列信息入列,存储至所述运行队列中进行调用等操作。
[0075] 可选的,上述队列消息处理方法还可以包括:
[0076] 监测所述队列消息在所述运行队列中的时间、所述队列消息的入队耗时信息、所述队列消息的出队耗时信息和所述队列消息的大小,并生成日志文件进行存储。
[0077] 其中,所述日志文件中包括场景/事件ID、业务关联的MQ流水号、主机名、开始时间、结束时间、当前时间以及当前负载度等信息中的一种信息或多种信息,因此根据该日志文件能够及时根据日志文件推断出发生问题的业务场景及评估该问题对目前系统业务功能的影响范围。
[0078] 对于队列消息大小的监测,主要为防止个别队列消息数据量巨大,造成出入队缓慢。可以预设队列消息的大小上限,对于超出上限的队列消息将拒绝处理,以保障系统的稳定性。对于队列消息在所述运行队列中的时间的监测,能够及时发现位于运行队列中且长期未处理的队列消息,从而对该队列消息进行相应的处理。
[0079] 另外,采用分布式文档存储数据库的save和findAndModify操作实现队列消息的入列和出列。为了提升系统性能,分布式文档存储数据库的save和findAndModify还可实现批量入队和出队。
[0080] 以下对队列消息的入列过程进行进一步的说明。
[0081] 接收队列消息的入列请求。
[0082] 根据预设负载和运行队列中未处理消息占用的负载,计算运行队列的当前负载度。
[0083] 根据运行队列的当前负载度判断运行队列中的未处理消息是否超过运行队列的当前限度。
[0084] 在运行队列中的未处理消息未超过运行队列的当前限度时,对该等待入列的队列消息执行入列操作,存储至运行队列中。将等待入列的队列消息存储至运行队列中后,运行队列的当前负载度增加1。
[0085] 在运行队列中未处理消息超过运行队列的当前限度时,将等待入列的队列消息存储至等待队列中。
[0086] 监测队列消息的入队耗时信息和队列消息的大小,并生成日志文件进行存储。
[0087] 另外,在运行队列中的未处理消息未超过运行队列的当前限度,且等待队列中存在队列消息时,对等待队列中的队列消息执行入列操作,存储至运行队列中。也可以定时批量将等待队列中的队列消息尝试放入运行队列中。
[0088] 另外,在运行队列的当前负载度大于零时,位于运行队列中的队列即可以出列。同时,监测队列消息的出队耗时信息和队列消息在运行队列中的时间,并生成日志文件进行存储。
[0089] 上述队列消息处理方法,获取运行队列中的未处理消息,根据所述运行队列中的未处理消息计算所述运行队列的当前负载度,在所述运行队列中的未处理消息未超过所述运行队列的当前限度时,将等待入列的队列消息存储至所述运行队列中,在所述运行队列中未处理消息超过所述运行队列的当前限度时,将等待入列的队列消息存储至等待队列中,通过设置运行队列和等待队列引入“生产者-消费者”模型,当队列消息无法入列时,先暂存至等待队列,而运行队列基于分布式文档存储数据库的固定集合构建,能够实现高效的查询、更新,从而能够提高消息的实时性,淘汰时间最久的数据,提高消息传输的效率。
[0090] 应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
[0091] 实施例二
[0092] 对应于上文实施例一所述的队列消息处理方法,图4示出了本发明实施例提供的队列消息处理程序的运行环境示意图。为了便于说明,仅示出了与本实施例相关的部分。
[0093] 在本实施例中,所述的队列消息处理程序400安装并运行于终端设备40中。该终端设备40可以是移动终端、掌上电脑、服务器等。该终端设备40可包括,但不仅限于,存储器401和处理器402。图4仅示出了具有组件401-402的终端设备40,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。
[0094] 所述存储器401在一些实施例中可以是所述终端设备40的内部存储单元,例如该终端设备40的硬盘或内存。所述存储器401在另一些实施例中也可以是所述终端设备40的外部存储设备,例如所述终端设备40上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器401还可以既包括所述终端设备40的内部存储单元也包括外部存储设备。所述存储器401用于存储安装于所述终端设备40的应用软件及各类数据,例如所述队列消息处理程序
400的程序代码等。所述存储器401还可以用于暂时地存储已经输出或者将要输出的数据。
[0095] 所述处理器402在一些实施例中可以是一中央处理器(Central Processing Unit,CPU),微处理器或其他数据处理芯片,用于运行所述存储器401中存储的程序代码或处理数据,例如执行所述队列消息处理程序400等。
[0096] 可选的,终端设备40还可以包括显示器。所述显示器在一些实施例中可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。所述显示器用于显示在所述终端设备40中处理的信息以及用于显示可视化的用户界面,例如应用菜单界面、应用图标界面等。所述终端设备40的部件401-402通过系统总线相互通信。
[0097] 请参阅图5,是本发明实施例提供的队列消息处理程序400的功能模块图。在本实施例中,所述的队列消息处理程序400可以被分割成一个或多个模块,所述一个或者多个模块被存储于所述存储器401中,并由一个或多个处理器(本实施例为所述处理器402)所执行,以完成本发明。例如,在图5中,所述的队列消息处理程序400可以被分割成队列设置模块501、负载度计算模块502、判断模块503和处理模块504。本发明所称的模块是指能够完成特定功能的一系列计算机程序指令段,比程序更适合于描述所述队列消息处理程序400在所述终端设备40中的执行过程。以下描述将具体介绍所述模块501-504的功能。
[0098] 其中,队列设置模块501,用于设置运行队列和等待队列,所述运行队列基于分布式文档存储数据库的固定集合构建,所述等待队列基于分布式文档存储数据库的无界集合构建。
[0099] 负载度计算模块502,用于获取运行队列中的未处理消息,根据所述运行队列中的未处理消息计算所述运行队列的当前负载度,所述运行队列基于分布式文档存储数据库的固定集合构建。
[0100] 判断模块503,用于根据所述运行队列的当前负载度判断所述运行队列中的未处理消息是否超过所述运行队列的当前限度。其中,判断模块503具体用于:
[0101] 计算所述运行队列的当前限度: 其中A为所述运行队列可容纳的消息容量,B为预设的平均消息大小,C为预设的负载度比例阀值;
[0102] 在 大于所述运行队列的当前负载度时,判定所述运行队列中的未处理消息未超过所述运行队列的当前限度;
[0103] 在 小于等于所述运行队列的当前负载度时,判定所述运行队列中的未处理消息超过所述运行队列的当前限度。
[0104] 处理模块504,用于在所述运行队列中的未处理消息未超过所述运行队列的当前限度时,将等待入列的队列消息存储至所述运行队列中;其中,将等待入列的队列消息存储至所述运行队列中后,所述运行队列的当前负载度增加。
[0105] 处理模块504,还用于在所述运行队列中的未处理消息超过所述运行队列的当前限度时,将等待入列的队列消息存储至等待队列中;所述等待队列基于分布式文档存储数据库的无界集合构建。
[0106] 可选的,负载度计算模块502具体用于:根据预设负载和所述未处理消息占用的负载,计算所述运行队列的当前负载度。
[0107] 可选的,所述队列信息处理程序400还可以被分割为监测模块。所述监测模块,用于监测所述队列消息在所述运行队列中的时间、所述队列消息的入队耗时信息、所述队列消息的出队耗时信息和所述队列消息的大小,并生成日志文件进行存储。
[0108] 可选的,处理模块504,还用于在所述运行队列中未处理消息未超过所述运行队列的当前限度且所述等待队列中存在队列消息时,将所述等待队列中的队列消息存储至所述运行队列中。
[0109] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0110] 另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0111] 所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
[0112] 以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。