一种消息获取方法和装置制造方法及图纸

技术编号:19219610 阅读:35 留言:0更新日期:2018-10-20 08:10
本说明书实施例公开了一种从消息队列中间件获取消息的方法和装置,所述方法由计算平台中的用于处理所述消息的进程执行,包括:获取当前分配信息,当前分配信息与当前分配给所述进程的第一数量的第一消息队列相关,其中,所述第一消息队列是所述消息队列中间件中的消息队列;判断当前分配信息相比于预存的初始分配信息是否发生变化,所述初始分配信息与在所述进程启动时分配给所述进程的第二数量的第二消息队列相关,其中,所述第二消息队列是所述消息队列中间件中的消息队列;以及在所述当前分配信息相比于所述初始分配信息发生变化的情况下,进行重启,以与所述第一数量的第一消息队列建立连接,从而从所述第一数量的第一消息队列获取消息。

【技术实现步骤摘要】
一种消息获取方法和装置
本说明书实施例涉及数据处理
,更具体地,涉及一种从消息队列中间件获取消息的方法和装置。
技术介绍
目前,对于大数据处理任务,尤其是实时任务,通常使用大数据计算平台来进行,例如Jstorm、Storm、SparkStreaming等。在这样的处理任务中,通常使用消息队列中间件进行数据接入。消息队列中间件已经逐渐成为IT系统内部通信的核心手段。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能,成为异步RPC(远程过程调用)的主要手段之一。目前,主流的消息中间件例如包括ActiveMQ、RabbitMQ、Kafka、RocketMQ等。例如,在Kafka-Storm方案中,消息队列中间件Kafka对Storm中的消费节点(消息处理进程)进行消息队列轮询分配,以保证均匀分配,并且使得每个消息队列只被一个节点消费,另外,通过上游消息队列来维护消息消费进度。然而,在上述Kafka-Storm方案中,当消息队列发生变化时,例如增加、减少、改动时,消费节点无法感知,并且,通过上游消息队列来维护消息消费进度不够稳定可靠,当Kafka中间件服务器端发生断电、死机等特殊情况时,有可能影响对消息消费进度的维护。因此,需要一种更有效的从消息队列中间件获取消息的方案,以解决上述不足。
技术实现思路
本说明书实施例旨在提供一种更有效的从消息队列中间件获取消息的方案,以解决现有技术中的不足。为实现上述目的,本说明书一个方面提供一种从消息队列中间件获取消息的方法,所述方法由计算平台中的用于处理所述消息的进程执行,包括:获取当前分配信息,所述当前分配信息与当前分配给所述进程的第一数量的第一消息队列相关,其中,所述第一消息队列是所述消息队列中间件中的消息队列;判断所述当前分配信息相比于预存的初始分配信息是否发生变化,所述初始分配信息与在所述进程启动时分配给所述进程的第二数量的第二消息队列相关,其中,所述第二消息队列是所述消息队列中间件中的消息队列;以及在所述当前分配信息相比于所述初始分配信息发生变化的情况下,进行重启,以与所述第一数量的第一消息队列建立连接,从而从所述第一数量的第一消息队列获取消息。在一个实施例中,在所述从消息队列中间件获取消息的方法中,所述消息队列中间件中的消息队列具有对应的主题,所述进程被设置为从所述消息队列中间件中的与至少一个特定主题对应的至少一个消息队列获取消息,以及,所述当前分配信息与当前的所述至少一个消息队列相关。在一个实施例中,在所述从消息队列中间件获取消息的方法中,所述进程为一组进程中一个进程,所述消息队列中间件中的消息队列具有对应的主题,所述一组进程被设定为从所述消息队列中间件中的与至少一个特定主题对应的至少一个消息队列获取消息,所述获取当前分配信息包括,从所述消息队列中间件获取第一信息,所述第一信息与当前的所述至少一个消息队列相关,以及,基于所述第一信息,获取所述当前分配信息。在一个实施例中,在所述从消息队列中间件获取消息的方法中,基于所述第一信息,获取所述当前分配信息包括,根据轮询算法,基于所述第一信息,获取所述当前分配信息。在一个实施例中,在所述从消息队列中间件获取消息的方法中,所述进程为一组进程中的一个进程,所述消息队列中间件中的消息队列具有对应的主题,所述一组进程被设置为从所述消息队列中间件中的与至少一个特定主题对应的至少一个消息队列获取消息,所述获取当前分配信息包括:从所述消息队列中间件获取第一信息,所述第一信息与当前的所述至少一个消息队列相关;判断所述第一信息相比于第二信息是否变化,其中,所述第二信息与在所述进程启动时的所述至少一个消息队列相关;以及在所述第一信息相比于第二信息发生变化的情况中,基于所述第一信息,获取所述当前分配信息。在一个实施例中,在所述从消息队列中间件获取消息的方法中,所述当前分配信息包括所述第一数量的值、和所述第一数量的第一消息队列中每个消息队列的主题、所在服务器的标识和队列标识,以及,所述初始分配信息包括所述第二数量的值、和所述第二数量的第二消息队列中每个消息队列的主题、所在服务器的标识和队列标识。在一个实施例中,所述从消息队列中间件获取消息的方法还包括,在进行重启之后,对于在所述重启之前和所述重启之后都与所述进程连接的第三消息队列,在存储单元中获取所述第三消息队列的处理进度信息,并根据所述处理进度信息,确定将要从所述第三消息队列获取的多个消息。在一个实施例中,在所述从消息队列中间件获取消息的方法中,所述处理进度信息从存储单元中的处理进度表获取,所述处理进度表中包括以下字段的值:主题、服务器标识、消息队列标识、以及消息标识。在一个实施例中,所述从消息队列中间件获取消息的方法还包括,在确定将要从所述第三消息队列获取的多个消息之后,在处理完所述获取的多个消息时,在所述存储单元中更新所述处理进度表。在一个实施例中,在所述从消息队列中间件获取消息的方法中,所述存储单元是独立于所述消息队列中间件和所述计算平台的第三方存储单元。在一个实施例中,在所述从消息队列中间件获取消息的方法中,所述计算平台为Kepler计算平台。本说明书另一方面提供一种从消息队列中间件获取消息的装置,所述装置由计算平台中的用于处理所述消息的进程实施,包括:第一获取单元,配置为,获取当前分配信息,所述当前分配信息与当前分配给所述进程的第一数量的第一消息队列相关,其中,所述第一消息队列是所述消息队列中间件中的消息队列;判断单元,配置为,判断所述当前分配信息相比于预存的初始分配信息是否发生变化,所述初始分配信息与在所述进程启动时分配给所述进程的第二数量的第二消息队列相关,其中,所述第二消息队列是所述消息队列中间件中的消息队列;以及重启单元,配置为,在所述当前分配信息相比于所述初始分配信息发生变化的情况下,进行重启,以与所述第一数量的第一消息队列建立连接,从而从所述第一数量的第一消息队列获取消息。在一个实施例中,在所述从消息队列中间件获取消息的装置中,所述进程为一组进程中一个进程,所述消息队列中间件中的消息队列具有对应的主题,所述一组进程被设定为从所述消息队列中间件中的与至少一个特定主题对应的至少一个消息队列获取消息,所述第一获取单元还包括:第一获取子单元,配置为,从所述消息队列中间件获取第一信息,所述第一信息与当前的所述至少一个消息队列相关;以及,第二获取子单元,配置为,基于所述第一信息,获取所述当前分配信息。在一个实施例中,在所述从消息队列中间件获取消息的装置中,所述进程为一组进程中的一个进程,所述消息队列中间件中的消息队列具有对应的主题,所述一组进程被设置为从所述消息队列中间件中的与至少一个特定主题对应的至少一个消息队列获取消息,所述第一获取单元还包括:第一获取子单元,配置为,从所述消息队列中间件获取第一信息,所述第一信息与当前的所述至少一个消息队列相关;判断子单元,配置为,判断所述第一信息相比于第二信息是否变化,其中,所述第二信息与在所述进程启动时的所述至少一个消息队列相关;以及第二获取子单元,配置为,在所述第一信息相比于第二信息发生变化的情况中,基于所述第一信息,获取所述当前分配信息。在一个实施例中,所述从消息队列中间件获取消息的装置还包括,第二获取单本文档来自技高网...

【技术保护点】
1.一种从消息队列中间件获取消息的方法,所述方法由计算平台中的用于处理所述消息的进程执行,包括:获取当前分配信息,所述当前分配信息与当前分配给所述进程的第一数量的第一消息队列相关,其中,所述第一消息队列是所述消息队列中间件中的消息队列;判断所述当前分配信息相比于预存的初始分配信息是否发生变化,所述初始分配信息与在所述进程启动时分配给所述进程的第二数量的第二消息队列相关,其中,所述第二消息队列是所述消息队列中间件中的消息队列;以及在所述当前分配信息相比于所述初始分配信息发生变化的情况下,进行重启,以与所述第一数量的第一消息队列建立连接,从而从所述第一数量的第一消息队列获取消息。

【技术特征摘要】
1.一种从消息队列中间件获取消息的方法,所述方法由计算平台中的用于处理所述消息的进程执行,包括:获取当前分配信息,所述当前分配信息与当前分配给所述进程的第一数量的第一消息队列相关,其中,所述第一消息队列是所述消息队列中间件中的消息队列;判断所述当前分配信息相比于预存的初始分配信息是否发生变化,所述初始分配信息与在所述进程启动时分配给所述进程的第二数量的第二消息队列相关,其中,所述第二消息队列是所述消息队列中间件中的消息队列;以及在所述当前分配信息相比于所述初始分配信息发生变化的情况下,进行重启,以与所述第一数量的第一消息队列建立连接,从而从所述第一数量的第一消息队列获取消息。2.根据权利要求1所述的从消息队列中间件获取消息的方法,其中,所述消息队列中间件中的消息队列具有对应的主题,所述进程被设置为从所述消息队列中间件中的与至少一个特定主题对应的至少一个消息队列获取消息,以及,所述当前分配信息与当前的所述至少一个消息队列相关。3.根据权利要求1所述的从消息队列中间件获取消息的方法,其中所述进程为一组进程中一个进程,所述消息队列中间件中的消息队列具有对应的主题,所述一组进程被设定为从所述消息队列中间件中的与至少一个特定主题对应的至少一个消息队列获取消息,所述获取当前分配信息包括,从所述消息队列中间件获取第一信息,所述第一信息与当前的所述至少一个消息队列相关,以及,基于所述第一信息,获取所述当前分配信息。4.根据权利要求3所述的从消息队列中间件获取消息的方法,其中,基于所述第一信息,获取所述当前分配信息包括,根据轮询算法,基于所述第一信息,获取所述当前分配信息。5.根据权利要求1所述的从消息队列中间件获取消息的方法,其中所述进程为一组进程中的一个进程,所述消息队列中间件中的消息队列具有对应的主题,所述一组进程被设置为从所述消息队列中间件中的与至少一个特定主题对应的至少一个消息队列获取消息,所述获取当前分配信息包括:从所述消息队列中间件获取第一信息,所述第一信息与当前的所述至少一个消息队列相关;判断所述第一信息相比于预存的第二信息是否变化,其中,所述第二信息与在所述进程启动时的所述至少一个消息队列相关;以及在所述第一信息相比于第二信息发生变化的情况中,基于所述第一信息,获取所述当前分配信息。6.根据权利要求1所述的从消息队列中间件获取消息的方法,其中所述当前分配信息包括所述第一数量的值、和所述第一数量的第一消息队列中每个消息队列的主题、所在服务器的标识和队列标识,以及,所述初始分配信息包括所述第二数量的值、和所述第二数量的第二消息队列中每个消息队列的主题、所在服务器的标识和队列标识。7.根据权利要求1所述的从消息队列中间件获取消息的方法,还包括,在进行重启之后,对于在所述重启之前和所述重启之后都与所述进程连接的第三消息队列,在存储单元中获取所述第三消息队列的处理进度信息,并根据所述处理进度信息,确定将要从所述第三消息队列获取的多个消息。8.根据权利要求7所述的从消息队列中间件获取消息的方法,其中,所述处理进度信息从存储单元中的处理进度表获取,所述处理进度表中包括以下字段的值:主题、服务器标识、消息队列标识、以及消息标识。9.根据权利要求8所述的从消息队列中间件获取消息的方法,还包括,在确定将要从所述第三消息队列获取的多个消息之后,在处理完所述获取的多个消息时,在所述存储单元中更新所述处理进度表。10.根据权利要求7所述的从消息队列中间件获取消息的方法,其中所述存储单元是独立于所述消息队列中间件和所述计算平台的第三方存储单元。11.根据权利要求1所述的从消息队列中间件获取消息的方法,其中所述计算平台为Kepler计算平台。12.一种从消息队列中间件获取消息的装置,所述装置由计算平台中的用于处理所述消息的进程实施,包括:第一获取单元,配置为,获取当...

【专利技术属性】
技术研发人员:于晓路阮若夷徐飞
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛,KY

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1