海量消息的处理方法和装置与流程

文档序号:12839120阅读:168来源:国知局
海量消息的处理方法和装置与流程

本发明涉及计算机技术领域,特别是涉及一种海量消息的处理方法和装置。



背景技术:

目前保险已逐步深入到了人们的日常生活中,保险种类也是日益繁多。为了能够让客户更便捷的了解保险信息,保险公司通常会主动向客户发送各种消息。如果在晚上休息时间给客户发送消息,势必会给客户带来烦扰。为了避免这一问题,对于不需要实时发送的消息保险公司通常会在工作时间发送。由此导致消息平台会积压海量的消息,使得大量的消息发送延迟。



技术实现要素:

基于此,有必要针对上述技术问题,提供一种能够有效缓解海量消息积压提高消息发送效率的海量消息的处理方法和装置。

一种海量消息的处理方法,所述方法包括:

生成job,所述job包括一个主job和多个子job;

利用主job抓取待处理消息,对所述待处理消息进行分组,将分组后的待处理消息分配至多个子job;

利用多个子job对分配到的待处理消息并发执行发送操作。

在其中一个实施例中,所述利用主job抓取待处理消息,对所述待处理消息进行分组,将分组后的待处理消息分配至多个子job包括:

获取子job任务量阈值;

利用主job根据子job任务量阈值抓取子job对应的待处理消息;

将抓取到的待处理消息设置为一个任务组,并为任务组添加对应的标签;

将添加标签后的任务组分配至子job;

重复执行所述利用主job根据子job任务量阈值抓取子job对应的待处理消息,直至为每个子job分配相应的任务组。

在其中一个实施例中,所述利用主job抓取待处理消息,对所述待处理消息进行分组,将分组后的待处理消息分配至多个子job包括:

利用主job抓取多个待处理消息;

获取子job任务量阈值;

根据子job任务量阈值对抓取到的待处理消息进行分组,得到多个任务组;

对多个任务组分别添加对应的标签,将添加标签后的任务组分配至多个子job。

在其中一个实施例中,在所述利用多个子job对分配到的待处理消息并发执行发送操作之后,还包括:

判断所述子job是否对待处理消息执行完发送操作;

若是,则计算已执行完发送操作的子job数量;

根据已执行完发送操作的子job数量再生成数量相等的子job;

利用主job对新生成的子job分配待处理消息,以使得新生成的子job对分配到的待处理消息并发执行发送操作。

在其中一个实施例中,所述利用多个子job对分配到的待处理消息并发执行发送操作包括:

利用主job将待处理消息对应的客户标识和消息模板标识发送至子job;

子job根据所述消息模板标识获取对应的消息模板,并对消息模板进行拼装;

利用子job将拼装后的消息模板通过客户标识发送至客户终端。

一种海量消息的处理装置,所述装置包括:

生成模块,用于生成job,所述job包括一个主job和多个子job;

分配模块,用于利用主job抓取待处理消息,对所述待处理消息进行分组,将分组后的待处理消息分配至多个子job;

发送模块,用于利用多个子job对分配到的待处理消息并发执行发送操作。

在其中一个实施例中,所述分配模块还用于获取子job任务量阈值;利用主job根据子job任务量阈值抓取子job对应的待处理消息;将抓取到的待处理消息设置为一个任务组,并为任务组添加对应的标签;将添加标签后的任务 组分配至子job;重复执行所述利用主job根据子job任务量阈值抓取子job对应的待处理消息,直至为每个子job分配相应的任务组。

在其中一个实施例中,所述分配模块还用于利用主job抓取多个待处理消息;获取子job任务量阈值;根据子job任务量阈值对抓取到的待处理消息进行分组,得到多个任务组;对多个任务组分别添加对应的标签,将添加标签后的任务组分配至多个子job。

在其中一个实施例中,所述装置还包括:

判断模块,用于判断所述子job是否对待处理消息执行完发送操作;

计算模块,用于若所述子job对待处理消息执行完发送操作,则计算已执行完发送操作的子job数量;

所述生成模块还用于根据已执行完发送操作的子job数量再生成数量相等的子job;所述分配模块还用于利用主job对新生成的子job分配待处理消息;所述发送模块还用于新生成的子job对分配到的待处理消息并发执行发送操作。

在其中一个实施例中,所述发送模块还用于利用主job将待处理消息对应的客户标识和消息模板标识发送至子job;子job根据所述消息模板标识获取对应的消息模板,并对消息模板进行拼装;利用子job将拼装后的消息模板根据客户标识发送至客户终端。

上述海量消息的处理方法和装置,通过生成主job和多个子job,利用主job抓取待处理消息,对待处理消息进行分组,并且将分组后的待处理消息分配至多个子job。利用多个子job对分配到的待处理消息并发执行发送操作。由于通过主job对多个子job分配待处理消息,多个子job对分配到的待处理消息执行并发发送操作,因此极大提高了待处理消息的发送效率,有效缓解了海量信息的积压。

附图说明

图1为一个实施例中海量消息的处理方法的流程图;

图2为一个实施例中服务器的结构示意图;

图3为一个实施例中海量消息的处理装置的结构示意图;

图4为一个实施例中海量消息的处理系统的结构示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

在一个实施例中,如图1所示,提供了一种海量消息的处理方法,以该方法应用于服务器为例进行说明,具体包括:

102,生成job,job包括一个主job和多个子job。

服务器上部署了数据库,优选的,数据库可以是oracle数据库。服务器在数据库中生成job(即作业)。其中,按照消息处理的逻辑将job分为主job和子job,其中,主job为一个,子job为多个。主job用于对每个子job分配待处理消息,子job用于对待处理消息进行发送。

104,利用主job抓取待处理消息,对待处理消息进行分组,将分组后的待处理消息分配至多个子job。

服务器利用主job在数据库中查询待处理消息的数量,抓取待处理消息,并将抓取到的待处理消息进行分组。其中,消息包括短信、社交网络消息和邮件等。消息具有对应的业务类型,其中,业务类型包括保险业务和银行业务等。例如,消息可以是与保险业务相关的短信。

服务器利用主job根据任务组对应的标签将分组后的待处理消息分配至子job。其中,服务器可以利用主job可以逐一为每个子job分配待处理消息,也可以利用主job集中为每个子job分配待处理消息。

具体的,服务器利用主job根据子job任务量阈值抓取子job对应的待处理消息;将抓取到的待处理消息设置为一个任务组,并为任务组添加对应的标签;将添加标签后的任务组分配至子job,重复执行利用主job根据子job任务量阈值抓取子job对应的待处理消息,直至为每个子job分配对应的任务组。由此通过主job逐一为每个子job分配了相应的待处理消息。

服务器还可以利用主job抓取多个待处理消息;根据子job任务量阈值对 抓取到的待处理消息进行分组,得到多个任务组;对多个任务组分别添加对应的标签。主job根据标签将多个任务组分别分配至多个子job,以使得每个子job都分配到相应的任务组。由此通过主job集中对每个子job分配了相应的待处理消息。

106,利用多个子job对分配到的待处理消息并发执行发送操作。

多个子job对分配到的待处理消息并发执行发送操作。具体的,子job根据分配到的待处理消息获取对应的客户标识,根据客户标识将待处理消息发送至对应的客户终端。客户终端包括台式电脑、个人笔记本电脑、平板电脑以及智能手机登。客户标识可以是手机号码、社交网络账号以及电子邮箱等。

本实施例中,通过生成主job和多个子job,利用主job抓取待处理消息,对待处理消息进行分组,并且将分组后的待处理消息分配至多个子job。利用多个子job对分配到的待处理消息并发执行发送操作。由于通过主job对多个子job分配待处理消息,多个子job对分配到的待处理消息执行并发发送操作,因此极大提高了待处理消息的发送效率,有效缓解了海量信息的积压。

在一个实施例中,利用主job抓取待处理消息,对待处理消息进行分组,将分组后的待处理消息分配至多个子job包括:利用主job根据子job任务量阈值抓取子job对应的待处理消息;将抓取到的待处理消息设置为一个任务组,并为任务组添加对应的标签;将添加标签后的任务组分配至子job;重复执行利用主job根据子job任务量阈值抓取子job对应的待处理消息,直至为每个子job分配相应的任务组。

服务器利用主job根据子job任务量阈值分别为每个子job来抓取待处理消息。子job任务量阈值可以是预先计算出的。子job任务量阈值可以是多个子job在预设时间内发送消息的总量的平均值。主job根据子job任务量阈值在数据库中抓取待处理消息,将抓取到的待处理消息设置为一个任务组,并且为任务组添加对应的标签。主job将添加标签后的任务组分配至子job。主job重复执行这一动作,直至为每个子job分配相应的任务组。。

进一步的,主job还可以根据业务类型来获取待处理消息。其中业务类型包括保险业务和银行业务等。每个子job可以被配置所发送消息对应的业务类 型。子job可以被配置为发送相同业务类型的消息,也可以被配置为发送不同业务类型的消息。

由于每个业务类型对应的待处理消息的数量巨大,而子job的数量是有限的,因此,可以将所有的子job可以被配置为发送相同业务类型的消息。服务器利用主job查询每个业务类型对应的待处理消息的数量,根据待处理消息的数量对多个业务类型进行排序。优选的,待处理消息的数量越多的,对应的业务类型排位越高,反之,业务类型的排位则越低。

可以利用主job根据业务类型的排序对子job分配任务。具体的,主job根据业务类型的排序,获取排在第一位的业务类型,将所有子job配置为该业务类型。利用主job根据子job的任务量阈值抓取该业务类型的待处理消息,将抓取到的待处理消息设置为一个任务组,并为任务组添加对应的标签,将添加标签后的任务组分配至子job,逐一为每个子job分配了相应的任务组。所有的子job对分配到的任务组并发执行发送操作,将该业务类型的待处理消息全部处理完。服务器利用主job获取排在第二位的业务类型,并对所有子job配置相应的业务类型,重复上述过程,直至将每个业务类型对应的待处理消息都发送完毕。由于主job是根据业务类型的排序来对子job分配任务,因此能够对待处理消息数量最多的业务类型进行优先处理,有效缓解了海量信息的积压。

如果多个业务类型对应的待处理消息的数量之间的差别在预设范围内,则可以对多个业务类型对应的待处理消息同时进行处理。具体的,利用主job获取业务类型,对多个子job分别配置不同的业务类型。可以利用主job对每个子job随机配置对应的业务类型。利用主job根据子job任务量阈值抓取子job被配置的业务类型所对应的待处理消息,将抓取到的待处理消息设置为一个任务组,并为任务组添加对应的标签,将添加标签后的任务组分配至子job,直至主job为每个子job分配相应的任务组。由于子job分别被配置了不同的业务类型,因此可以对多个业务类型的待处理消息进行并发处理,由此方便不同的用户能够及早接收到相应的消息。

在一个实施例中,利用主job抓取待处理消息,对待处理消息进行分组, 将分组后的待处理消息分配至多个子job包括:利用主job抓取多个待处理消息;获取子job任务量阈值;根据子job任务量阈值对抓取到的待处理消息进行分组,得到多个任务组;对多个任务组分别添加对应的标签,将添加标签后的任务组分配至多个子job。

本实施例中,利用主job查询数据库中待处理信息的数量,根据子job的任务量阈值计算所需子job总量。由于数据库的处理能力是有一定限度的,为了确保数据库的平稳运行,因此在数据库内同时运行的子job的数量是一定的。利用主job获取在数据库中同时运行的子job的数量,并且获取子job任务量阈值。利用主job根据子job任务量阈值与数据库中同时运行的子job的数量计算子job并发操作待处理消息的总量,即要抓取的多个待处理消息的数量。将抓取到的待处理消息根据子job任务量阈值进行拆分,得到多个任务组,由此通过主job集中对每个子job分配对应的任务组。

进一步的,服务器利用主job查询每个业务类型对应的待处理消息的数量,根据待处理消息的数量对多个业务类型进行排序。优选的,待处理消息的数量越多的,对应的业务类型排位越高,反之,业务类型的排位则越低。服务器可以利用主job根据业务类型的排序对子job分配任务。从而能够对待处理消息数量最多的业务类型进行优先处理,有效缓解了海量信息的积压。

在一个实施例中,在利用多个子job对分配到的待处理消息并发执行发送操作之后,还包括:判断子job是否对待处理消息执行完发送操作;若是,则计算已执行完发送操作的子job数量;根据已执行完发送操作的子job数量再生成数量相等的子job;利用主job对新生成的子job分配待处理消息,以使得新生成的子job对分配到的待处理消息并发执行发送操作。

本实施例中,服务器对子job都设置了执行任务的开始时间和时间间隔。待处理消息也可以称为子job的任务。子job执行任务也就是子job对待处理消息执行发送操作。子job在接收到任务组时开始对任务组内的待处理消息执行发送操作的时刻,视为子job执行任务的开始时间。子job执行完任务组内的所有待处理消息所耗费的时间称为子job执行任务的时间间隔。任务组内所有的待处理消息被发送之后,子job即被释放。

由于每个子job执行任务的开始时间可能会不同,导致每个子job执行完任务组内的所有待处理消息的时间可能不同。或者由于待处理消息对应的业务类型不同,使得每个子job执行任务的时间间隔不同,也可能会导致每个子job执行完任务组内的所有待处理消息的时间不同。

每个子job都具有对应的日志,日志中记录了子job执行任务的状况。在主job对子job分配待处理消息的预设时间之后,服务器判断子job对分配到的待处理消息是否已发送完。具体的,在主job对子job分配待处理消息的预设时间之后,服务器利用主job查看每个子job对应的日志,根据日志记录来判断子job对待处理消息执行发送操作的状况。由于数据库的处理能力是有一定限度的,为了确保数据库的平稳运行,因此在数据库内同时运行的子job的数量是一定的。子job对任务组内所有的待处理消息执行完发送操作后会被释放。利用主job查询数据库中待处理信息的数量,根据子job的任务量阈值计算所需子job总量。在主job对子job分配待处理消息的预设时间之后,计算完成发送操作的子job数量。根据已执行完发送操作的子job数量生成数量相对的子job。由此使得数据库内运行的子job的总数量保持不变,从而维持数据库的平稳运行。对于新生成的子job,服务器利用主job为新生成的子job分配待处理消息。具体的,可以采用上述实施例中提供的方式通过主job可以逐一为新生成的子job分配待处理消息,也可以集中为新生成的子job分配待处理消息,新生成的子job对待处理消息并发执行发送操作。重复执行,直至在数据库中生成的子job的数量与计算出的所需子job总量相等,所有的待处理消息被发送完毕。

在一个实施例中,利用多个子job对分配到的待处理消息并发执行发送操作包括:利用主job将待处理消息对应的客户标识和消息模板标识发送至子job;子job根据消息模板标识获取对应的消息模板,并对消息模板进行拼装;利用子job将拼装后的消息模板根据客户标识发送至客户终端。

本实施例中,多个子job对分配到的待处理消息并发执行发送操作。每个子job对分配到的待处理消息单独进行发送操作,子job之间互不影响。具体的,每个子job对待处理消息执行发送操作的过程包括:利用主job将待处理 消息对应的客户标识和消息模板标识发送至子job。不同的待处理消息根据其对应的业务类型可以采用不同的消息模板。服务器利用主job根据待处理消息对应的业务类型获取对应的客户标识和消息模板。例如,待处理消息为与保单相关的短信,则服务器可以利用主job根据保单信息来获取待处理消息对应的客户标识和消息模板。主job将待处理消息对应的客户标识和消息模板标识发送至子job,子job根据消息模板标识获取对应的消息模板,根据客户标识获取对应的客户信息,根据客户信息对消息模板中的变量进行替换,由此完成对消息模板的拼装。子job将拼装后的消息模板根据客户标识发送至客户终端。通过多个子job对待处理消息并发执行发送操作,从而有效提高了消息发送效率,避免了海量消息的积压。

在一个实施例中,在获取子job任务量阈值之前,还包括:获取子job的数量;多次获取所有子job在预设时间内发送消息的总数量,将最高的总数量确定为所有子job的任务总量阈值;根据所有子job的任务总量阈值与子job的数量计算子job的任务量阈值。

本实施例中,为了让每个子job发送更多的待处理消息,需要确定子job发送待处理消息的任务量阈值。具体的,服务器可以分别多次获取所有子job在预设时间内发送消息的总数量,将其中最高的总数量确定为所有子job的任务总量阈值。服务器根据所有子job的任务量总阈值与子job的数量计算每个子job的任务量均值,将子job的任务量均值作为子job的任务量阈值。由于所有子job的任务总量阈值是所有子job在预设时间内发送的总数量最高的,由此确保了每个子job的任务量阈值也是最高的。从而能够使得每个子job尽可能发送更多的待处理消息。

还可以根据业务类型分别计算每个子job对应的任务量阈值。由此,可以在子job处理不同业务类型对应的待处理消息时,能够采用不同的任务量阈值。有效提高海量消息的积压,提高消息发送效率。

在一个实施例中,如图2所示,提供了一种服务器,包括通过系统总线连接的处理器、内存储器、非易失性存储介质和网络接口。其中,该服务器的非 易失性存储介质中存储有操作系统和海量消息的处理装置,海量消息的处理装置用于有效缓解海量消息积压,提高消息发送效率。服务器的处理器用于提供计算和控制能力,被配置为执行一种海量消息的处理方法。服务器可以是独立服务器,也可以是集群服务器。

在一个实施例中,如图3所示,提供了一种海量消息的处理装置,包括:生成模块302、分配模块304和发送模块306,其中:

生成模块302,用于生成job,job包括一个主job和多个子job。

分配模块304,用于利用主job抓取待处理消息,对待处理消息进行分组,将分组后的待处理消息分配至多个子job。

发送模块306,用于利用多个子job对分配到的待处理消息并发执行发送操作。

在一个实施例中,分配模块304还用于获取子job任务量阈值;利用主job根据子job任务量阈值抓取子job对应的待处理消息;将抓取到的待处理消息设置为一个任务组,并为任务组添加对应的标签;将添加标签后的任务组分配至子job;重复执行利用主job根据子job任务量阈值抓取子job对应的待处理消息,直至为每个子job分配相应的任务组。

在一个实施例中,分配模块304还用于利用主job抓取多个待处理消息;获取子job任务量阈值;根据子job任务量阈值对抓取到的待处理消息进行分组,得到多个任务组;对多个任务组分别添加对应的标签,将添加标签后的任务组分配至多个子job。

在一个实施例中,如图4所示,该装置还包括:判断模块308和计算模块310,其中:

判断模块308,用于判断子job是否对待处理消息执行完发送操作。

计算模块310,用于若子job对待处理消息执行完发送操作,则计算已执行完发送操作的子job数量。

生成模块302还用于根据已执行完发送操作的子job数量再生成数量相等的子job;分配模块304还用于利用主job对新生成的子job分配待处理消息; 发送模块306还用于新生成的子job对分配到的待处理消息并发执行发送操作。

在一个实施例中,发送模块308还用于利用主job将待处理消息对应的客户标识和消息模板标识发送至子job;子job根据消息模板标识获取对应的消息模板,并对消息模板进行拼装;利用子job将拼装后的消息模板根据客户标识发送至客户终端。

在一个实施例中,计算模块310还用于获取子job的数量;多次获取所有子job在预设时间内发送消息的总数量,将最高的总数量确定为所有子job的任务总量阈值;根据所有子job的任务总量阈值与子job的数量计算子job的任务量阈值。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

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