消息的处理方法、装置和电子设备与流程

文档序号:15200173发布日期:2018-08-19 10:45阅读:181来源:国知局

本发明实施例计算机技术领域,尤其涉及一种消息的处理方法、装置和设备。



背景技术:

大多数消息中间件,例如阿里云mq(messagequeue)和metaq(metamorphosis)都可以支持定时消息或者延时消息。目前,定时消息或者延时消息已应用到许多业务场景中,举个简单的例子:当在购物平台(例如,天猫)创建订单,假设设置该订单在45分钟内未支付即被关闭,这就生成一条延时消息(或者定时消息)。在咱们的实际生活中,尤其是网络交互过程中,定时消息或者延时消息随处可见。

在相关技术中定时消息(或者延时消息)的实现主要采用如下方式:存储引擎接收到客户端发送的定时消息后,首先将定时消息存入等待队列(定时队列)中,再由单独的线程时刻轮询等待队列,当满足投递条件(例如,到达延时时间)时,将定时消息投递到目标队列,由消费者消费该定时消息。

发明人的实现本发明的过程中,发现现有技术存在如下缺陷:定时消息堆积能力弱,当定时消息数量较大时,服务器端调度压力大、调度能力不足,导致定时消息大量堆积,出现严重的延误投递现象。



技术实现要素:

本发明实施例提供的消息的处理方法、装置和电子设备,提升定时消息堆积能力,且当定时消息数量较大时,可以降低定时消息延时误差,更大程度上保障定时消息被准时投递。

本发明的一方面,提供一种消息的处理方法,设置有多个定时队列,所述多个定时队列分别与多个预设的延时级别对应,所述方法包括:接收定时消息,并将所述定时消息写入数据文件;根据所述定时消息的延时级别,将所述定时消息的索引信息存入对应的定时队列中;分别监控所述多个定时队列,以判断是否存在满足预设投递条件的定时消息;如果存在满足预设投递条件的定时消息,则将满足预设投递条件的定时消息的索引信息投递到所述目标队列,以供使用者通过所述索引信息获取满足预设投递条件的定时消息。

本发明的第二方面,提供一种消息的处理装置,设置有多个定时队列,所述多个定时队列分别与多个预设的延时级别对应,所述装置包括:第一接收模块,用于接收定时消息,并将所述定时消息写入数据文件;第一存储模块,用于根据所述定时消息的延时级别,将所述定时消息的索引信息存入对应的定时队列中;队列监控模块,用于分别监控所述多个定时队列,以判断是否存在满足预设投递条件的定时消息;消息重投模块,用于当存在满足预设投递条件的定时消息时,将满足预设投递条件的定时消息的索引信息投递到所述目标队列,以供使用者通过所述索引信息获取满足预设投递条件的定时消息。

本发明的第三方面,提供一种电子设备,包括:存储器,用于存储程序;处理器,耦合至所述存储器,用于执行所述程序,且设置有多个定时队列,所述多个定时队列分别与多个预设的延时级别对应,以用于:接收定时消息,并将所述定时消息写入数据文件;根据所述定时消息的延时级别,将所述定时消息的索引信息存入对应的定时队列中;分别监控所述多个定时队列,以判断是否存在满足预设投递条件的定时消息;如果存在满足预设投递条件的定时消息,则将满足预设投递条件的定时消息的索引信息投递到所述目标队列,以供使用者通过所述索引信息获取满足预设投递条件的定时消息。

本发明的第四方面,提供一种消息的处理方法,设置有多个定时队列,所述多个定时队列分别与多个预设的延时级别对应,所述方法包括:接收定时消息,并将所述定时消息写入数据文件;根据所述定时消息的延时级别,将所述定时消息的索引信息存入对应的定时队列中。

本发明的第五方面,提供一种消息的处理装置,设置有多个定时队列,所述多个定时队列分别与多个预设的延时级别对应,所述装置包括:第二接收模块,用于接收定时消息,并将所述定时消息写入数据文件;第二存储模块,用于根据所述定时消息的延时级别,将所述定时消息的索引信息存入对应的定时队列中。

本发明的第六方面,提供一种电子设备,包括:存储器,用于存储程序;处理器,耦合至所述存储器,用于执行所述程序,且设置有多个定时队列,所述多个定时队列分别与多个预设的延时级别对应,以用于:接收定时消息,并将所述定时消息写入数据文件;根据所述定时消息的延时级别,将所述定时消息的索引信息存入对应的定时队列中。

本发明的第七方面,提供一种消息的处理方法,设置有多个目标队列,所述多个目标队列分别与多个原始主题信息对应,各所述目标队列存储有与所述原始主题信息对应的定时消息的索引信息,所述定时消息存储在数据文件,所述方法包括:从所述目标队列中读取索引信息;根据所述索引信息从所述数据文件中读取与所述索引信息对应的定时消息。本发明的第八方面,提供一种消息的处理装置,设置有多个目标队列,所述多个目标队列分别与多个原始主题信息对应,各所述目标队列存储有与所述原始主题信息对应的定时消息的索引信息,所述定时消息存储在数据文件,所述装置包括:索引信息读取模块,用于从所述目标队列中读取索引信息;定时消息读取模块,用于根据所述索引信息从所述数据文件中读取与所述索引信息对应的定时消息。

本发明的第九方面,提供一种电子设备,包括:存储器,用于存储程序;处理器,耦合至所述存储器,用于执行所述程序,且设置有多个目标队列,所述多个目标队列分别与多个原始主题信息对应,各所述目标队列存储有与所述原始主题信息对应的定时消息的索引信息,所述定时消息存储在数据文件,以用于:从所述目标队列中读取索引信息;根据所述索引信息从所述数据文件中读取与所述索引信息对应的定时消息。

应用本发明实施例,将定时消息的索引信息按延时级别堆积在定时队列中,因此使定时消息具有跟普通消息一致的堆积能力,以及将满足投递条件的定时消息的索引信息投递到目标队列,使用者可以按顺序使用到该定时消息,降低了随机文件读写,保障服务器端不会因定时消息降低读写性能,降低服务器端的负载压力和调度压力,减少定时消息的堆积,从而可以更大程度上保障定时消息被准时投递,降低定时消息误差。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

附图说明

图1为相关技术中定时消息的处理原理示意图;

图2为本发明实施例提供的消息的处理方法的流程示意图之一;

图3为本发明实施例提供的消息的处理方法的流程示意图之二;

图4为本发明实施例提供的定时消息的处理过程示意图;

图5为本发明实施例提供的消息的处理方法的流程示意图之三;

图6为本发明实施例提供的消息的处理方法的流程示意图之四;

图7为本发明实施例提供的消息的处理装置的结构示意图之一;

图8为本发明实施例提供的消息的处理装置的结构示意图之二;

图9为本发明实施例提供的消息的处理装置的结构示意图之三;

图10为本发明实施例提供的消息的处理装置的结构示意图之四;

图11为本发明实施例提供的电子设备的结构示意图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

在本发明的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。

定时队列,也可以称之为延迟队列,它是一种带有定时功能或者延迟功能的消息队列。在例如当订单一直处于未支付状态时,如何及时的关闭订单,并退还库存?如何定期检查处于退款状态的订单是否已经退款成功?新创建店铺,n天内没有上传商品,系统如何知道该信息,并发送激活短信等等业务场景中都将需要定时队列。

消息的生产者,产生消息的一方,可以是服务器中的某个模块,也可以是其他服务器,也可以是与服务器具有消息交互的用户终端等。以购物平台的应用场景为例,例如商家根据购买者的购物请求而创建的订单,而根据系统中订单生成模块的设定,订单在45分钟内未支付即被关闭,这样这就生成一条延时消息(或者定时消息),要求消费者在45分钟内未支付,如果到了45分钟该订单仍然未被付款,需要通知消费者或者通知订单取消模块去处理该消息,该商家或者说交易平台上的订单生成模块即为消息的生产者。

消息的使用者,使用消息的一方,可以是服务器中的某个模块,也可以是其他服务器,也可以是与服务器具有消息交互的用户终端等。具体地使用方式可以是简单的读取,或者对该消息本身或者基于该消息进行进一步处理。仍然以上述购物平台为例,消费者需要在45分钟内完成订单的支付,如果到了45分钟该订单仍然未被付款,交易平台通知消费者,这时消费者可以读取该消息,并且进行支付操作。当然,如果该消息未被支付,则交易平台的订单取消模块也会读取该消息并将其取消掉。在这里,消费者的终端或者交易平台的订单取消模块即可以作为消息的使用者。

图1为相关技术中定时消息的处理原理示意图。如图1所示,客户端可以部署于例如手机、笔记本、pad等终端侧,其可以作为消息的生产者生产定时消息(例如,通过客户端的人机交互界面接收用户的类似于订单请求等,从而产生定时消息),并可以将定时消息发送给服务器端。在服务器端,首先可以通过存储引擎将定时消息放置在定时队列中,然后由单独的线程轮询定时队列,当定时消息满足投递条件时,将该定时消息投递到目标队列,以供消息的使用者使用。

在本发明实施例中,对定时消息的存储及读取使用过程进行改进,提高定时消息的堆积能力,且降低服务器端的负载压力、调度压力,减少定时消息的堆积,从而可以更大程度上保障定时消息准时投递。

为了本领域技术人员能够清楚、准确地理解本发明的技术方案,下面将结合附图及相关实施例对本发明的技术方案进行详细的描述。

实施例一

图2为本发明实施例提供的消息的处理方法的流程示意图之一。

如图2所示,本发明实施例的一种消息的处理方法可以包括如下步骤:

步骤210,接收定时消息,并将定时消息写入数据文件。本步骤可以在服务器中运行软件程序实现。

在服务器端,例如,服务器中的存储引擎,可以接收来自消息的生成者(例如客户端)产生的定时消息,并通过存储引擎将定时消息写入数据文件中。

步骤220,根据定时消息的延时级别,将定时消息的索引信息存入对应的定时队列中。本步骤可以在服务器中运行软件程序实现。

在本发明一实施例中,定时消息可以包括延时级别,该延时级别可以是在消息的生成者在生成消息的过程中从预设的延时级别中选定的,例如,工程师可以根据经验预先设置一些业务场景的延时级别,进行存储,在生成者生成消息时,根据实际业务场景,选定对应的延时级别,延时级别可以预先被设定为与一预定的延时时长相对应,为了和后面区别,这里称作第一延时时长。进一步地,步骤220可以实现为从定时消息中读取延时级别,并根据定时消息的延时级别,将定时消息的索引信息存入对应的定时队列中。

在本发明另一实施例中,定时消息中可以包括有投递时间或第二延时时长,其中,投递时间或第二延时时长为消息生成者在生成消息的过程中设定的,示例性地,消息的生成者在生成消息时,会首先设定该消息的投递时间(例如,投递时间为2017年1月21日14:00,假设当前时间为2017年1月20日14:00,则从当前时刻计时,24小时后为该消息的投递时间)或者第二延时时长(例如,第二延时时长为15min,则从当前时刻计时,15min后为需将该消息投递至目标队列,以供消息的使用者使用)。进一步地,步骤220可以实现为从定时消息中读取投递时间或第二延时时长,并根据投递时间或第二延时时长,确定定时消息的延时级别,然后根据定时消息的延时级别,将定时消息的索引信息存入对应的定时队列中。示例性地,可以预先设置并存储投递时间或第二延时时长对应的延时级别的对应关系,当接收到定时消息时,先从定时消息中对应的字段读取存储投递时间或第二延时时长,然后根据投递时间或第二延时时长从存储的对应关系中确定定时消息的延时级别,再根据延时级别将定时消息的索引信息存入对应的定时队列中。

在本发明实施例中,定时消息的索引信息可以包括定时消息在数据文件中的存储位置的偏移量。偏移量即数据在数据文件中存储的有效地址,因此,根据定时消息在数据文件中的存储位置的偏移量,可以准确地找到该定时消息的数据文件中的地址。

本领域技术人员可以理解的是,本发明实施例中,根据定时消息的延时级别,将定时消息的索引信息存入与其延时级别对应的定时队列中,而非将定时消息本身存入定时队列,因此,其堆积能力可以与普通消息的堆积能力一致,总而言之,提高了定时消息的堆积能力。

步骤230,分别监控多个定时队列,以判断是否存在满足预设投递条件的定时消息。本步骤可以在服务器中运行软件程序实现。如果存在,则执行步骤240。

在本步骤中,多个延时级别分别对应多个预设的第一延时时长,可以通过一个或多个线程,以轮询的方式分别监控多个定时队列,轮询的时间间隔根据多个延时队列的延时级别设定。示例性地,可以通过一个线程轮询多个定时队列,例如,有表1所示的多个延时级别及对应的多个第一延时时长,则该线程可以每隔1s监控延时级别为1至3的定时队列中是否有满足预设投递条件的定时消息,以及每隔1min监控延时级别为4至12的定时队列。在另一些示例中,可以通过多个线程轮询多个定时队列,例如,可以采用3个线程轮询多个定时队列,示例性地,3个线程例如分别为秒级的线程、分钟级的线程和小时级别的线程,其中,秒级的线程可以用于轮询例如表1中的延时级别为1和2的定时队列,分钟级的线程可以用于轮询例如表1中的延时级别为3-9的定时队列,以及小时级的线程可以用于轮询例如表1中延时级别为10-12的定时队列。应用该实施例,按级别运行的调度线程能更大程度上保障定时消息被准时投递。

本步骤中满足预设投递条件具体可以为:定时消息的索引信息存入定时队列的时间已经达到第一延时时长,如果达到,则执行步骤240。

表1延时级别与第一延时时长的对应关系

如表1所示,多个延时级别对应多个预设的第一延时时长,以及多个延时级别对应多个定时队列。在本步骤中,根据延时级别监控对应的定时队列,以判断该定时队列中的定时消息是否达到其第一延时时间,如果达到则执行步骤240。

步骤240,将满足预设投递条件的定时消息的索引信息投递到目标队列,以供使用者通过索引信息获取满足预设投递条件的定时消息。本步骤可以在服务器中运行软件程序实现。

在本步骤中,例如,将达到其第一延时时间的定时消息的索引信息(例如,该定时消息在数据文件中的存储位置的地址数据)投递到目标队列中。消息的使用者可以从目标队列中读取定时消息的索引信息,再根据索引信息去数据文件中读取定时消息,以使用定时消息。

应用本发明实施例,将定时消息的索引信息按延时级别堆积在定时队列中,因此使定时消息具有跟普通消息一致的堆积能力,以及将满足投递条件的定时消息的索引信息投递到目标队列,消息的使用者可以按顺序使用到该定时消息,降低了随机文件读写,保障服务器端不会因定时消息降低读写性能,降低服务器端的负载压力和调度压力,可以更大程度上保障定时消息被准时投递,降低定时消息误差。

实施例二

图3为本发明实施例提供的消息的处理方法的流程示意图之二。

如图3所示,本发明实施例的一种消息的处理方法可以包括如下步骤:

步骤310,接收定时消息,并将定时消息写入数据文件。本步骤可以在服务器中运行软件程序实现。

本步骤的实现过程可以参考步骤210,为了简洁,在此不再赘述。

步骤320,对定时消息的原始主题信息进行修改,在保留原始主题信息的基础上,增加预设的附加主题信息,以形成新主题信息。本步骤可以在服务器中运行软件程序实现。

本领域技术人员可以理解的是,消息主题(topic),用于对消息进行分类。消息的产生者在生成消息时,可以设置该消息的主题。

在本步骤中,可以通过修改定时消息的原始主题信息,将普通消息和定时消息区分开。示例性地,当服务器端接收到消息时,可以先判断该消息的延时级别,例如当延时级别大于0时,可以确定该消息为定时消息,进而修改该定时消息的原始主题信息,以形成新主题信息。修改原始主题信息为新主题信息可以实现为:在保留原始主题信息的基础上,增加预设的附加主题信息。例如,原始主题信息为topic,则在topic的基础上,加上schedule,形成新主题信息schedule_topic。

步骤330,选取具有新主题信息的定时消息,并根据该定时消息的延时级别,将定时消息的索引信息存入对应的定时队列中。本步骤可以在服务器中运行软件程序实现。

本领域技术人员可以理解的是,在数据文件中可以存储多种文件数据,例如多种消息,包括普通消息、定时消息等。

在本步骤中,可以通过消息的主题区分普通消息和定时消息。将具有新主题信息的消息确定为定时消息,并可以根据定时消息的延时级别,将该定时消息的索引信息存入对应的定时队列中。将定时消息的索引信息存入定时队列的过程可以参见图2所示实施例的步骤220,为了简洁,在此不再赘述。

步骤340,分别监控多个定时队列,以判断是否存在满足预设投递条件的定时消息。本步骤可以在服务器中运行软件程序实现。如果有满足预设投递条件的定时消息,则执行步骤350。

本步骤的实现过程及原理、效果可以参见图2所示实施例的步骤230,为了简洁,在此不再赘述。

步骤350,根据索引信息从数据文件中获取满足预设投递条件的定时消息。本步骤可以在服务器中运行软件程序实现。

在本步骤中,可以根据定时队列中定时消息的索引信息,从数据文件中对应的存储地址获取满足预设投递条件的定时消息。例如,索引信息为300,即该定时消息在数据文件中的存储地址为300,根据该存储地址查找数据文件,以从该地址获取定时消息。

步骤360,将预设投递条件的定时消息中的新主题信息修改为原始主题信息。本步骤可以在服务器中运行软件程序实现。

在步骤350获取满足预设投递条件的定时消息后,在本步骤中,针对该满足预设投递条件的定时消息,将其新主题信息修改为原始主题信息,例如该定时消息的新主题信息为schedule_topic,将其修改为原始主题信息topic,从而将该定时消息修改为普通信息。

在一些示例中,还可以修改该定时消息的延时级别,例如假设该定时消息的延时级别为1,在本步骤中可以将该定时消息的延时级别修改为0,例如延时级别0对应的第一延时时长为0。通过修改定时消息的主题信息和延时级别,将定时消息修改为普通消息,以使消息的使用者可以按序随时读取该定时消息。

步骤370,将修改为原始主题后的定时消息写入数据文件的当前写入位置,并更新满足预设投递条件的定时消息的索引信息。本步骤可以在服务器中运行软件程序实现。

在本步骤中,可以将修改为原始主题后的定时消息重新写入数据文件,但是其在数据文件中的存储位置会发生变化,即偏移量会发生变化。示例性地,将修改为原始主题后的定时消息写入数据文件的当前写入位置,举例来说,在修改为原始主题前,定时消息在数据文件中的存储地址为3000,在修改为原始主题之后,假设数据文件的当前写入位置的存储地址为4001,则将该定时消息重新写入数据文件中存储地址为4001的位置。

在将定时消息重新写入数据文件中后,由于定时消息的偏移量发生了变化,因此,在本步骤中根据新的偏移量更新满足预设投递条件的定时消息的索引信息。

步骤380,根据原始主题信息,将该满足预设投递条件的定时消息的更新后的索引信息投递至与原始主题信息对应的目标队列,以供使用者通过更新后的索引信息获取满足预设投递条件的定时消息。本步骤可以在服务器中运行软件程序实现。

在本步骤中,将满足预设投递条件的定时消息的更新后的索引信息写入对应的目标队列中。消息的使用者可以通过读取目标队列中的更新后的索引信息获取到该定时消息在数据文件中的存储地址,从而读取定时消息。

本领域技术人员可以理解的是,机械硬盘在写入和读取数据时,均采用的是同一个磁头,在写入数据过程中,磁头始终保持在当前写入位置,在读取数据时,磁头需要从当前写入位置移动到需读取数据存储的位置,以从该位置读取对应的数据。而本发明实施例中,将重新生成满足预设投递条件的定时消息的索引信息(包括新的偏移量)分发到目标队列中后,这些定时消息将会处于当前写入位置附近的存储区域中,而磁头大部分时间也是保持在该当前写入位置,这样在随后的消息使用者调取该这些定时消息时,不用大范围移动磁头去读取之前写入的旧的定时消息,从而提高了消息使用过程中的消息读取效率。

综上,应用本发明实施例,定时消息内容被存储在数据文件中,索引信息按延时级别堆积在定时消息队列中,具有跟普通消息一致的堆积能力将提高了定时消息的堆积能力。

以及将满足投递条件的定时消息的索引信息投递到目标队列,消息的使用者可以按顺序使用到该定时消息,降低服务器端的负载压力和调度压力,可以更大程度上保障定时消息被准时投递,降低定时消息误差。

此外,在本发明实施例中,先从数据文件中定时消息的原始存储位置获取到该定时消息,然后再将该定时消息重新写入数据文件中的当前写入位置,因此,在消息的使用者在使用该定时消息时可以直接从当前写入位置读取,而无需移动磁头去获取旧消息,从而可以降低随机文件io,进而保障服务器端不会因定时消息降低读写性能,且提高数据读取效率。

实施例三

图5为本发明实施例提供的消息的处理方法的流程示意图之三。

如图5所示,本发明实施例提供的一种消息的处理方法,其中,可以设置有多个定时队列,多个定时队列分别与多个预设的延时级别对应,该方法可以包括如下步骤:

步骤410,接收定时消息,并将定时消息写入数据文件。本步骤可以在服务器中运行软件程序实现。

在服务器端,例如,服务器中的存储引擎,可以接收来自消息的生成者(例如客户端)产生的定时消息,并通过存储引擎将定时消息写入数据文件中。

步骤420,根据定时消息的延时级别,将定时消息的索引信息存入对应的定时队列中。本步骤可以在服务器中运行软件程序实现。

在本发明一实施例中,定时消息可以包括延时级别,该延时级别可以是在消息的生成者在生成消息的过程中从预设的延时级别中选定的,例如,工程师可以根据经验预先设置一些业务场景的延时级别,进行存储,在生成者生成消息时,根据实际业务场景,选定对应的延时级别,延时级别可以预先被设定为与一预定的延时时长相对应,为了和后面区别,这里称作第一延时时长。进一步地,步骤420可以实现为从定时消息中读取延时级别,并根据定时消息的延时级别,将定时消息的索引信息存入对应的定时队列中。

在本发明另一实施例中,定时消息中可以包括有投递时间或第二延时时长,其中,投递时间或第二延时时长为消息生成者在生成消息的过程中设定的,示例性地,消息的生成者在生成消息时,会首先设定该消息的投递时间(例如,投递时间为2017年1月21日14:00,假设当前时间为2017年1月20日14:00,则从当前时刻计时,24小时后为该消息的投递时间)或者第二延时时长(例如,第二延时时长为15min,则从当前时刻计时,15min后为需将该消息投递至目标队列,以供消息的使用者使用)。进一步地,步骤420可以实现为从定时消息中读取投递时间或第二延时时长,并根据投递时间或第二延时时长,确定定时消息的延时级别,然后根据定时消息的延时级别,将定时消息的索引信息存入对应的定时队列中。示例性地,可以预先设置并存储投递时间或第二延时时长对应的延时级别的对应关系,当接收到定时消息时,先从定时消息中对应的字段读取存储投递时间或第二延时时长,然后根据投递时间或第二延时时长从存储的对应关系中确定定时消息的延时级别,再根据延时级别将定时消息的索引信息存入对应的定时队列中。

在本发明实施例中,定时消息的索引信息可以包括定时消息在数据文件中的存储位置的偏移量。偏移量即数据在数据文件中存储的有效地址,因此,根据定时消息在数据文件中的存储位置的偏移量,可以准确地找到该定时消息的数据文件中的地址。

应用本发明实施例,根据定时消息的延时级别,将定时消息的索引信息存入与其延时级别对应的定时队列中,而非将定时消息本身存入定时队列,因此,其堆积能力可以与普通消息的堆积能力一致,提高了定时消息的堆积能力。

实施例四

图6为本发明实施例提供的消息的处理方法的流程示意图之四。

如图6所示,本发明实施例提供的一种消息的处理方法,其中,可以设置有多个目标队列,多个目标队列分别与多个原始主题信息对应,各目标队列存储有与原始主题信息对应的定时消息的索引信息,定时消息存储在数据文件中,该方法可以包括如下步骤:

步骤610,从目标队列中读取索引信息。本步骤可以在服务器中运行软件程序实现,具体可以是服务器响应使用者的获取定时消息请求而触发执行步骤610,进而再执行步骤620,从而将能够将定时消息提供给使用者进行使用。

在本步骤中,在一些实施例中,可以在接收到来自消息的使用者读取消息的指令时,例如服务器的存储引擎可以从目标队列中读取对应的索引信息。在另一些实施例中,可以根据定时消息的延时时间,定时地从目标队列中读取到达对应消息的索引信息。

步骤620,根据索引信息从数据文件中读取与索引信息对应的定时消息。本步骤可以在服务器中运行软件程序实现。

在本步骤中,索引信息例如可以包括定时消息在数据文件中的偏移量,即存储地址,因此可以通过索引信息在数据文件中查找并获取对应的定时消息。在本发明中,在定时消息达到延时时间后,再重新存入数据文件的当前写入位置,且索引信息与定时消息的原始主题信息对应,因此,通过目标队列中的索引信息获取的定时消息可以如同普通消息一样进行投递,这样可以加快消息投递的速度和提高投递效率。

应用本发明实施例,目标队列中存储索引信息,可以提高定时消息的堆积能力,而目标队列中存储的索引信息与定时消息的原始主题信息对应,因此通过该索引信息从数据文件中获取的定时消息可以如同普通消息一样进行投递,从而加快消息的投递速度、提高投递效率。

前述实施例中说明了本发明技术方案可实现的技术原理和详细技术方案,为了使本领域技术人员能够更加准确地理解本发明,下面将结合图4对本发明实施例对定时消息的写入和读取过程进一步说明。实施例五

图4为本发明实施例提供的定时消息的处理过程示意图,通过本实施例再从整体上说明一下本发明实施例的定时消息的处理过程。

如图4所述,消息的产生者生成定时消息,并将消息发送给服务器端的存储引擎,存储引擎在接收到定时消息后,首先将定时消息存入数据文件中,并会修改定时消息的主题信息,以区分数据文件中的定时消息和普通消息,且根据定时消息在数据文件中的偏移量生成索引信息,将索引信息存入对应的定时队列中,从图中,可以看出包括多个定时队列,如图中队列1至队列x,其中,1-x表示定时消息的延时级别,如前述实施实施例所述,多个延时级别对应多个定时队列。以及在本发明实施例中,可以通过一个或者多个调度线程以轮询的方式监控多个定时队列,例如调度线程可以分为秒级的、分钟级的和小时级的,分别定时地轮询对应的定时队列。

调度线程在监控到具有满足预设投递条件的定时消息时,存储引擎可以将定时消息重投至数据文件中,其中,在重投该定时消息时,可以修改该定时消息的主题信息为原始主题信息,以及修改该定时消息的延时级别(例如修改为0),且生成新的索引信息,再将新的索引信息写入目标队列中,此外,还从定时消息当前在数据文件中的存储位置取出定时消息,并将定时消息重新写入到数据文件的当前写入位置。因此,消息的使用者可以从目标队列中读取定时消息的新的索引信息,并根据新的索引信息从数据文件中读取该定时消息,以使用该定时消息。

本发明还提供了一种应用上述方法实施例的消息的处理装置。下面将结合图7和图10对消息的处理装置进行详细说明。

实施例六

图7为本发明实施例提供的消息的处理装置的结构示意图之一。

如图7所示,一种消息的处理装置,该装置中可以设置有多个定时队列,其中,多个定时队列分别与多个预设的延时级别对应。该消息的处理装置可以包括第一接收模块510、第一存储模块520、队列监控模块530和消息重投模块540。

第一接收模块510可以用于接收定时消息,并将定时消息写入数据文件。

第一存储模块520用于根据定时消息的延时级别,将定时消息的索引信息存入对应的定时队列中。示例性地,定时消息的索引信息可以包括定时消息在数据文件中的存储位置的偏移量。

在一些实施例中,定时消息中可以包含有延时级别,定时消息中包含的延时级别为消息生成者在生成消息的过程中从多个预设的延时级别中选定的。基于此,第一存储模块520可以包括第一读取单元(图中未示出)和第一存储单元(图中未示出),其中,第一读取单元可以用于从定时消息中读取延时级别,第一存储单元可以用于根据定时消息的延时级别,将定时消息的索引信息存入对应的定时队列中。

在另一些实施例中,定时消息中可以包含有投递时间或第二延时时长,投递时间或第二延时时长消息生成者在生成消息的过程中设定的。基于此,第一存储模块520可以包括第二读取单元(图中未示出)、延时级别确定单元(图中未示出)和第二存储单元(图中未示出)。其中,第二读取单元可以用于从定时消息中读取投递时间或第二延时时长。延时级别确定单元可以用于根据投递时间或第二延时时长,确定定时消息的延时级别。第二存储单元可以用于根据定时消息的延时级别,将定时消息的索引信息存入对应的定时队列中。

队列监控模块530可以用于分别监控多个定时队列,以判断是否存在满足预设投递条件的定时消息。

其中,队列监控模块530可以包括轮询监控单元(图中未示出),轮询监控单元可以用于通过一个或多个线程,以轮询的方式分别监控多个定时队列,轮询的时间间隔根据多个延时队列的延时级别设定。

示例性地,多个延时级别分别对应多个预设的第一延时时长,满足预设投递条件具体为:定时消息的索引信息存入定时队列的时间已经达到第一延时时长。

消息重投模块540可以用于当存在满足预设投递条件的定时消息时,将满足预设投递条件的定时消息的索引信息投递到目标队列,以供使用者通过索引信息获取满足预设投递条件的定时消息。

应用本发明实施例,将定时消息的索引信息按延时级别堆积在定时队列中,因此使定时消息具有跟普通消息一致的堆积能力,以及将满足投递条件的定时消息的索引信息投递到目标队列,消息的使用者可以按顺序获取到该定时消息,降低了随机文件读写,保障服务器端不会因定时消息降低读写性能,降低服务器端的负载压力和调度压力,可以更大程度上保障定时消息被准时投递,降低定时消息误差。

实施例七

图8为本发明实施例提供的消息的处理装置的结构示意图之二。

如图8所示,一种消息的处理装置可以包括第一接收模块510、第一存储模块520、队列监控模块530、消息重投模块540和主题修改模块550。

其中,第一接收模块510、第一存储模块520、队列监控模块530和消息重投模块540功能可以参考图7所示的实施例。

在本实施例中,消息的处理装置增设了主题修改模块550,各个模块的结构也将随之改进。

第一接收模块510可以用于接收定时消息,并将定时消息写入数据文件。

主题修改模块550可以用于在第一接收模块510将定时消息写入数据文件的过程中,对定时消息的原始主题信息进行修改,在保留原始主题信息的基础上,增加预设的附加主题信息,以形成新主题信息。

第一存储模块520可以用于根据定时消息的延时级别,将定时消息的索引信息存入对应的定时队列中。具体地,第一存储模块520可以用于基于主题修改模块550修改后得到的新主题信息,选取具有新主题信息的定时消息,并根据该定时消息的延时级别,将定时消息的索引信息存入对应的定时队列中。

队列监控模块530可以用于分别监控多个定时队列,以判断是否存在满足预设投递条件的定时消息。

消息重投模块540可以用于当存在满足预设投递条件的定时消息时,将满足预设投递条件的定时消息的索引信息投递到目标队列,以供使用者通过索引信息获取满足预设投递条件的定时消息。示例性地,在服务器端的存储引擎中可以设置有多个目标队列,且多个目标队列分别与多个原始主题信息对应。

在一些实施例中,消息重投模块540可以包括消息获取单元541、主题修改单元542和消息投递单元543。其中,消息获取单元541可以用于根据索引信息从数据文件中获取满足预设投递条件的定时消。主题修改单元542可以用于并将预设投递条件的定时消息中的新主题信息修改为原始主题信息。消息投递单元543可以用于根据原始主题信息,将该满足预设投递条件的定时消息的索引信息投递至与原始主题信息对应的目标队列,以供使用者通过索引信息获取满足预设投递条件的定时消息。

在另一些实施例中,还可以包括第三存储单元544,用于在主题修改单元542将预设投递条件的定时消息中的新主题信息修改为原始主题信息之后,将修改为原始主题后的定时消息写入数据文件的当前写入位置,并更新满足预设投递条件的定时消息的索引信息。基于此,消息投递单元543具体可以用于根据原始主题信息,将该满足预设投递条件的定时消息的更新后的索引信息投递至与原始主题信息对应的目标队列,以供使用者通过更新后的索引信息获取满足预设投递条件的定时消息。

综上,应用本发明实施例,定时消息内容被存储在数据文件中,索引信息按延时级别堆积在定时消息队列中,具有跟普通消息一致的堆积能力将提高了定时消息的堆积能力。

以及将满足投递条件的定时消息的索引信息投递到目标队列,消息的使用者可以按顺序读取到该定时消息,降低服务器端的负载压力和调度压力,可以更大程度上保障定时消息被准时投递,降低定时消息误差。

此外,在本发明实施例中,先从数据文件中定时消息的原始存储位置获取到该定时消息,然后再将该定时消息重新写入数据文件中的当前写入位置,因此,在消息的使用者在获取该定时消息时可以直接从当前写入位置读取,而无需移动磁头去获取旧消息,从而可以降低随机文件io,进而保障服务器端不会因定时消息降低读写性能,且提高数据读取效率。

实施例八

图9为本发明实施例提供的消息的处理装置的结构示意图之三。

如图9所示,一种消息的处理装置可以包括第二接收模块910和第二存储模块920。其中,消息的处理装置可以设置有多个定时队列,多个定时队列分别与多个预设的延时级别对应。

第二接收模块910可以用于接收定时消息,并将定时消息写入数据文件。

第二存储模块920可以用于根据定时消息的延时级别,将定时消息的索引信息存入对应的定时队列中。

在一些实施例中,定时消息中可以包含有延时级别,延时级别可以为消息生成者在生成消息的过程中从多个预设的延时级别中选定的。基于此,第二存储模块920具体可以用于从定时消息中读取延时级别,并根据定时消息的延时级别,将定时消息的索引信息存入对应的定时队列中。

在另一些实施例中,定时消息中可以包含有投递时间或第二延时时长,投递时间或第二延时时长可以为消息生成者在生成消息的过程中设定的。基于此,第二存储模块920具体可以用于从定时消息中读取投递时间或第二延时时长,并根据投递时间或第二延时时长,确定定时消息的延时级别,然后,根据定时消息的延时级别,将定时消息的索引信息存入对应的定时队列中。

应用本发明实施例,根据定时消息的延时级别,将定时消息的索引信息存入与其延时级别对应的定时队列中,而非将定时消息本身存入定时队列,因此,其堆积能力可以与普通消息的堆积能力一致,提高了定时消息的堆积能力。

实施例九

图10为本发明实施例提供的消息的处理装置的结构示意图之四。如图10所示,一种消息的处理装置可以包括索引信息读取模块1010和定时消息读取模块1020。其中,消息的处理装置可以设置有多个目标队列,多个目标队列分别与多个原始主题信息对应,各目标队列存储有与原始主题信息对应的定时消息的索引信息,定时消息存储在数据文件。

索引信息读取模块1010可以用于从目标队列中读取索引信息。

定时消息读取模块1020可以用于根据索引信息从数据文件中读取与索引信息对应的定时消息。

应用本发明实施例,目标队列中存储索引信息,可以提高定时消息的堆积能力,而目标队列中存储的索引信息与定时消息的原始主题信息对应,因此通过该索引信息从数据文件中获取的定时消息可以如同普通消息一样进行投递,从而加快消息的投递速度、提高投递效率。

实施例十

以上描述了消息的处理装置的内部功能和结构,图11为本发明实施例提供的电子设备的结构示意图,如图11所示,实际中,上述实施例中的消息的处理装置可实现为一种电子设备,可以包括:存储器111和处理器112。

存储器111,用于存储程序。

除上述程序之外,存储器111还可被配置为存储其它各种数据以支持在电子设备上的操作。这些数据的示例包括用于在电子设备上操作的任何应用程序或方法的指令,例如线上购物平台、线上电商平台、电话簿数据,消息,图片,视频等。

存储器111可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。

处理器112,耦合至存储器111,用于执行存储器111中的程序。

在本发明一实施例中,处理器112可以设置有多个定时队列,多个定时队列分别与多个预设的延时级别对应,以用于:

接收定时消息,并将定时消息写入数据文件;

根据定时消息的延时级别,将定时消息的索引信息存入对应的定时队列中;

分别监控多个定时队列,以判断是否存在满足预设投递条件的定时消息;

如果存在满足预设投递条件的定时消息,则将满足预设投递条件的定时消息的索引信息投递到目标队列,以供使用者通过索引信息获取满足预设投递条件的定时消息。

在本发明另一实施例中,处理器112可以设置有多个定时队列,多个定时队列分别与多个预设的延时级别对应,以用于:

接收定时消息,并将定时消息写入数据文件;

根据定时消息的延时级别,将定时消息的索引信息存入对应的定时队列中。

在本发明另一实施例中,处理器112可以设置有多个目标队列,多个目标队列分别与多个原始主题信息对应,各目标队列存储有与原始主题信息对应的定时消息的索引信息,定时消息存储在数据文件,以用于:

从目标队列中读取索引信息;

根据索引信息从数据文件中读取与索引信息对应的定时消息。

上述的具体处理操作已经在前面实施例中进行了详细说明,在此不再赘述。

进一步,如图11所示,电子设备还可以包括:通信组件113、电源组件114、音频组件115、显示器116等其它组件。图11中仅示意性给出部分组件,并不意味着电子设备只包括图11所示组件。

通信组件113被配置为便于电子设备和其他设备之间有线或无线方式的通信。电子设备可以接入基于通信标准的无线网络,如wifi,2g或3g,或它们的组合。在一个示例性实施例中,通信组件113经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,通信组件113还包括近场通信(nfc)模块,以促进短程通信。例如,在nfc模块可基于射频识别(rfid)技术,红外数据协会(irda)技术,超宽带(uwb)技术,蓝牙(bt)技术和其他技术来实现。

电源组件114,为电子设备的各种组件提供电力。电源组件114可以包括电源管理系统,一个或多个电源,及其他与为电子设备生成、管理和分配电力相关联的组件。

音频组件115被配置为输出和/或输入音频信号。例如,音频组件115包括一个麦克风(mic),当电子设备处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器111或经由通信组件113发送。在一些实施例中,音频组件115还包括一个扬声器,用于输出音频信号。

显示器116包括屏幕,其屏幕可以包括液晶显示器(lcd)和触摸面板(tp)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与触摸或滑动操作相关的持续时间和压力。

本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1