消息中间件消息获取方法、装置和系统制造方法及图纸

技术编号:20451703 阅读:26 留言:0更新日期:2019-02-27 04:35
本发明专利技术公开一种消息中间件消息获取方法、装置和系统。该方法包括:接收消息处理端发送的消息拉取请求,其中消息拉取请求中包括目标消息位置;获取消息队列的处理进度,其中所述处理进度为当前操作之前消息队列的游标位置,处理进度之后的消息从未被获取过;比较目标消息位置和处理进度;若目标消息位置处于处理进度之后,则生成目标消息的消息处理状态信息,并将所述消息处理状态存储在消息处理状态缓存中;将目标消息推送给消息处理端。本发明专利技术通过在处理阶段完成时更新消息的状态,查询消息处理状态缓存中的消息处理状态,将处理状态符合的消息推送给对应消息处理端,避免了消息处理端进行不必要的消息获取。

【技术实现步骤摘要】
消息中间件消息获取方法、装置和系统
本专利技术涉及数据处理
,特别涉及一种消息中间件消息获取方法、装置和系统。
技术介绍
消息中间件是指支持与保障分布式应用程序之间收发消息数据的中间层,消息发送方和处理方之间的连接完全是松耦合的,通信是非阻塞的。常见的产品有RabbitMQ(MQ的全称为MessageQueue,消息队列)、RocketMQ等。消息中间件的基本工作原理为:消息数据存储于服务端的消息队列中,消息处理端从消息队列中拉取消息进行处理。图1为现有消息中间件消息获取方法的示意图。如图1所示,为现有消息中间件消息获取方法中:1、消息处理端批量从服务端拉取消息,服务端存储消息队列的处理进度。2、消息的处理结果和状态都存储于各个消息处理端中。3、倘若在消息处理未完成时消息处理端出现异常错误或者由于业务需要重试处理消息时,向服务端的批量拉取很可能获取到已经处理完成的消息,导致重复处理。4、中间件配套的管理查询系统中很难高效地获取消息实时的处理状态。现有的消息中间件为了保证消息处理的性能,通常通过批量方式从消息队列中顺序获取消息,然后把消息的处理状态存储在处理端。但是当该批消息中有个别消息处理失败或者由于业务需要重试处理时,处理端的批量操作也会对目标消息在消息队列中邻近的已处理完成的消息进行不必要的重复获取。
技术实现思路
鉴于以上技术问题,本专利技术提供了一种消息中间件消息获取方法、装置和系统,在处理阶段完成时更新消息的状态,避免了消息处理端进行不必要的消息获取。根据本专利技术的一个方面,提供一种消息中间件消息获取方法,包括:接收消息处理端发送的消息拉取请求,其中,所述消息拉取请求中包括目标消息位置;获取消息队列的处理进度,其中,所述处理进度为当前操作之前消息队列的游标位置,处理进度之后的消息从未被获取过;比较目标消息位置和处理进度;若目标消息位置处于处理进度之后,则生成目标消息的消息处理状态信息,并将所述消息处理状态信息存储在消息处理状态缓存中;将目标消息推送给消息处理端。在本专利技术的一个实施例中,所述方法还包括:在目标消息推送成功的情况下,将目标消息的消息处理状态信息修改为已拉取,并将目标消息的消息处理状态更新到消息处理状态信息缓存;和/或,在消息处理端处理成功、返回处理结果的情况下,将消息处理状态缓存中目标消息的消息处理状态信息删除。在本专利技术的一个实施例中,所述目标消息位置处于签收进度之后,其中,消息队列的签收进度之后的消息为消息队列中尚未收到消息处理端返回处理成功结果的消息。在本专利技术的一个实施例中,所述方法还包括:若目标消息位置处于处理进度位置或处于处理进度之前,则判断消息处理状态缓存中是否存在目标消息的消息处理状态信息;若消息处理状态缓存中不存在目标消息的消息处理状态信息,则将目标消息后的下一个消息作为新目标消息,针对新目标消息执行所述比较目标消息位置和处理进度的步骤。在本专利技术的一个实施例中,所述方法还包括:若消息处理状态缓存中存在目标消息的消息处理状态信息,则根据目标消息的消息处理状态信息对目标消息进行相应操作。在本专利技术的一个实施例中,所述根据目标消息的消息处理状态信息对目标消息进行相应操作包括:若目标消息的消息处理状态信息为未处理,则执行所述将目标消息推送给消息处理端的步骤;若目标消息的消息处理状态信息为已拉取,则指示消息处理端对所述目标消息进行处理,并对目标消息后的下一个消息执行所述比较目标消息位置和处理进度的步骤。根据本专利技术的另一方面,提供一种消息调度处理器,包括:拉取请求接收模块,用于接收消息处理端发送的消息拉取请求,其中,所述消息拉取请求中包括目标消息位置;处理进度获取模块,用于获取消息队列的处理进度,其中,所述处理进度为当前操作之前消息队列的游标位置,处理进度之后的消息从未被获取过;比较模块,用于比较目标消息位置和处理进度;状态消息生成模块,用于在目标消息位置处于处理进度之后的情况下,生成目标消息的消息处理状态信息,并将所述消息处理状态信息存储在消息处理状态缓存中;消息推送模块,用于将目标消息推送给消息处理端。在本专利技术的一个实施例中,所述消息调度处理器还包括:状态消息修改模块,用于在目标消息推送成功的情况下,将目标消息的消息处理状态信息修改为已拉取,并将目标消息的消息处理状态更新到消息处理状态信息缓存;在消息处理端处理成功、返回处理结果的情况下,将消息处理状态缓存中目标消息的消息处理状态信息删除。在本专利技术的一个实施例中,所述目标消息位置处于签收进度之后,其中,消息队列的签收进度之后的消息为消息队列中尚未收到消息处理端返回处理成功结果的消息。在本专利技术的一个实施例中,所述消息调度处理器还包括:状态消息查询模块,用于在目标消息位置处于处理进度位置或处于处理进度之前的情况下,判断消息处理状态缓存中是否存在目标消息的消息处理状态信息;在消息处理状态缓存中不存在目标消息的消息处理状态信息的情况下,将目标消息后的下一个消息作为新目标消息,指示比较模块针对新目标消息执行所述比较目标消息位置和处理进度的操作。在本专利技术的一个实施例中,所述消息调度处理器还包括:消息处理模块,用于在消息处理状态缓存中存在目标消息的消息处理状态信息的情况下,根据目标消息的消息处理状态信息对目标消息进行相应操作。在本专利技术的一个实施例中,消息处理模块用于在目标消息的消息处理状态信息为未处理的情况下,指示消息推送模块执行所述将目标消息推送给消息处理端的操作;在目标消息的消息处理状态信息为已拉取的情况下,指示消息处理端对所述目标消息进行处理,并指示比较模块对目标消息后的下一个消息执行所述比较目标消息位置和处理进度的操作。根据本专利技术的另一方面,提供一种消息中间件服务端,包括消息队列、消息处理状态缓存、以及如上述任一实施例所述的消息调度处理器。根据本专利技术的另一方面,提供一种消息中间件消息获取系统,包括消息发送端、消息处理端、以及如上述任一实施例所述的消息中间件服务端。在本专利技术的一个实施例中,所述消息中间件消息获取系统还包括:管理查询系统,用于从所述消息中间件服务端查询目标消息的消息处理状态信息。本专利技术通过在处理阶段完成时更新消息的状态,查询消息处理状态缓存中的消息处理状态,将处理状态符合的消息推送给对应消息处理端,避免了消息处理端进行不必要的消息获取。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为现有消息中间件消息获取方法的示意图。图2为本专利技术消息中间件消息获取系统一个实施例的示意图。图3为本专利技术消息中间件消息获取方法第二实施例的示意图。图4为本专利技术消息中间件消息获取方法第三实施例的示意图。图5为本专利技术消息中间件消息获取方法第四实施例的示意图。图6为本专利技术消息调度处理器第一实施例的示意图。图7为本专利技术消息调度处理器第二实施例的示意图。图8为本专利技术一个实施例中消息队列的示意图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,本文档来自技高网...

【技术保护点】
1.一种消息中间件消息获取方法,其特征在于,包括:接收消息处理端发送的消息拉取请求,其中,所述消息拉取请求中包括目标消息位置;获取消息队列的处理进度,其中,所述处理进度为当前操作之前消息队列的游标位置,处理进度之后的消息从未被获取过;比较目标消息位置和处理进度;若目标消息位置处于处理进度之后,则生成目标消息的消息处理状态信息,并将所述消息处理状态信息存储在消息处理状态缓存中;将目标消息推送给消息处理端。

【技术特征摘要】
1.一种消息中间件消息获取方法,其特征在于,包括:接收消息处理端发送的消息拉取请求,其中,所述消息拉取请求中包括目标消息位置;获取消息队列的处理进度,其中,所述处理进度为当前操作之前消息队列的游标位置,处理进度之后的消息从未被获取过;比较目标消息位置和处理进度;若目标消息位置处于处理进度之后,则生成目标消息的消息处理状态信息,并将所述消息处理状态信息存储在消息处理状态缓存中;将目标消息推送给消息处理端。2.根据权利要求1所述的方法,其特征在于,还包括:在目标消息推送成功的情况下,将目标消息的消息处理状态信息修改为已拉取,并将目标消息的消息处理状态更新到消息处理状态信息缓存;和/或,在消息处理端处理成功、返回处理结果的情况下,将消息处理状态缓存中目标消息的消息处理状态信息删除。3.根据权利要求2所述的方法,其特征在于,所述目标消息位置处于签收进度之后,其中,消息队列的签收进度之后的消息为消息队列中尚未收到消息处理端返回处理成功结果的消息。4.根据权利要求1-3中任一项所述的方法,其特征在于,还包括:若目标消息位置处于处理进度位置或处于处理进度之前,则判断消息处理状态缓存中是否存在目标消息的消息处理状态信息;若消息处理状态缓存中不存在目标消息的消息处理状态信息,则将目标消息后的下一个消息作为新目标消息,针对新目标消息执行所述比较目标消息位置和处理进度的步骤。5.根据权利要求4所述的方法,其特征在于,还包括:若消息处理状态缓存中存在目标消息的消息处理状态信息,则根据目标消息的消息处理状态信息对目标消息进行相应操作。6.根据权利要求5所述的方法,其特征在于,所述根据目标消息的消息处理状态信息对目标消息进行相应操作包括:若目标消息的消息处理状态信息为未处理,则执行所述将目标消息推送给消息处理端的步骤;若目标消息的消息处理状态信息为已拉取,则指示消息处理端对所述目标消息进行处理,并对目标消息后的下一个消息执行所述比较目标消息位置和处理进度的步骤。7.一种消息调度处理器,其特征在于,包括:拉取请求接收模块,用于接收消息处理端发送的消息拉取请求,其中,所述消息拉取请求中包括目标消息位置;处理进度获取模块,用于获取消息队列的处理进度,其中,所述处理进度为当前操作之前消息队列的游标位置,处理进度之后的消息从未被获取过;比较模块,用于比较目标消息位置和处理进...

【专利技术属性】
技术研发人员:林棋夏勇郑东建肖庆云段江南黄景平曾康彭亮
申请(专利权)人:中国电信股份有限公司
类型:发明
国别省市:北京,11

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

1