一种消息队列重试方法及设备技术

技术编号:29132726 阅读:34 留言:0更新日期:2021-07-02 22:28
本申请的目的是提供一种消息队列重试方法及设备,本申请通过消息队列的消息协商器从消息的生产者接收目标消息,目标消息包括消息体,记录目标消息的创建时间、已重试次数并为配置过期时间和总重试次数,并一并发送给对应的消费者,使得消费在消费所述目标消息时根据已重试次数和总重试次数,判断目标消息是否是最后一次重试,若是则在目标消息消费失败时,结束对目标消息的重试;或,在消费目标消息时,根据创建时间和过期时间,判断目标消息是否允许继续重试,若否则在目标消息消费失败时,结束对目标消息的重试,实现了由消费者来干预消息失败时的重试策略,从而做出对应的业务处理或提前结束重试等。

【技术实现步骤摘要】
一种消息队列重试方法及设备
本申请涉及分布式系统的
,尤其涉及一种消息队列重试方法及设备。
技术介绍
现有技术中,消息队列(MessageQueue,MQ)在分布式系统中应用十分广泛,其在解耦、异步和削峰等问题的解决上,起到了很大的作用。目前,主流的MQ都支持失败重试策略的配置,当MQ消息消费失败时,可在一定时间内进行重试。但这些重试策略,都是由MQ的消息协商器broker来控制的,消费者基本无法干预。
技术实现思路
本申请的一个目的是提供一种消息队列重试方法及设备,实现了在MQ的消息协商器下发消息时,增加消息的总重试次数、创建时间、过期时间及已重试次数,由消费者来干预消息失败时的重试策略,使得消费者能够做出对应的业务处理或提前结束重试等。根据本申请的一个方面,提供了一种消息队列重试方法,应用于消息队列的消息协商器端,其中,所述方法包括:从消息的生产者接收目标消息,所述目标消息包括消息体;记录所述目标消息的创建时间和已重试次数,并为所述目标消息配置过期时间和可重试的总重试次数;将所述目标消息及其对应的所述创建时间、所述已重试次数、所述总重试次数及过期时间一并下发给对应的消费者。进一步地,上述方法中,所述方法还包括:在所述目标消息中设置一个用于指示所述目标消息是否为最后一次重试的标识;接收所述消费者发送的所述目标消息的重试请求,并确定重试时间;若所述重试时间已超过所述过期时间,且所述标识用于指示所述目标消息并非为最后一次重试,则设置所述标识为用于指示所述目标消息为最后一次重试;将所述用于指示所述目标消息为最后一次重试的标识发送至所述消费者。进一步地,上述方法中,所述方法还包括:当从消息的生产者接收到所述目标消息时,初始化所述目标消息的已重试次数为零。进一步地,上述方法中,所述方法还包括:若所述目标消息在消费者端消费失败,从所述消息协商器接收所述目标消息的重试请求时,累计所述目标消息的已重试次数。根据本申请的另一方面,还提供了一种消息队列重试方法,应用于消息队列的消费者端,其中,所述方法包括:接收消息队列的消息协商器下发的目标消息及其对应的创建时间、所述已重试次数、所述总重试次数及过期时间,所述目标消息包括消息体;在消费所述目标消息时,根据所述已重试次数和所述总重试次数,判断所述目标消息是否是最后一次重试,若是,则在所述目标消息消费失败时,结束对所述目标消息的重试;或,在消费所述目标消息时,根据所述创建时间和所述过期时间,判断所述目标消息是否允许继续重试,若否,则在所述目标消息消费失败时,结束对所述目标消息的重试。进一步地,上述方法中,所述消费所述目标消息时,根据所述创建时间和所述过期时间,判断所述目标消息是否允许继续重试之后,所述方法还包括:若是,则向所述消息协商器发起所述目标消息的重试请求;接收所述消息协商器发送的用于指示所述目标消息为最后一次重试的标识;在再次消费所述目标消息后,若所述目标消息消费失败,则结束对所述目标消息的重试。根据本申请的另一方面,还提供了一种非易失性存储介质,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行时,使所述处理器实现如上述消息队列重试方法。根据本申请的另一方面,还提供了一种消息队列重试的消息协商器,其中,该消息协商器包括:一个或多个处理器;计算机可读介质,用于存储一个或多个计算机可读指令,当所述一个或多个计算机可读指令被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上述消息协商器端的消息队列重试方法。根据本申请的另一方面,还提供了一种消息队列重试的消费者端,其中,该消费者端包括:一个或多个处理器;计算机可读介质,用于存储一个或多个计算机可读指令,当所述一个或多个计算机可读指令被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上述消费者端的消息队列重试方法。与现有技术相比,本申请通过消息队列的消息协商器从消息的生产者接收目标消息,所述目标消息包括消息体;记录所述目标消息的创建时间和已重试次数,并为所述目标消息配置过期时间和可重试的总重试次数,并将所述目标消息及其对应的所述创建时间、所述已重试次数、所述总重试次数及过期时间一并下发给对应的消费者,使得消费在消费所述目标消息时,根据所述已重试次数和所述总重试次数,判断所述目标消息是否是最后一次重试,若是,则在所述目标消息消费失败时,结束对所述目标消息的重试;或,在消费所述目标消息时,根据所述创建时间和所述过期时间,判断所述目标消息是否允许继续重试,若否,则在所述目标消息消费失败时,结束对所述目标消息的重试,实现了在MQ的消息协商器下发消息时,增加消息的总重试次数、创建时间、过期时间及已重试次数,由消费者来干预消息失败时的重试策略,使得消费者能够做出对应的业务处理或提前结束重试等。附图说明通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:图1示出根据本申请一个方面的一种消息队列重试方法的交互流程示意图。附图中相同或相似的附图标记代表相同或相似的部件。具体实施方式下面结合附图对本申请作进一步详细描述。在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。内存是计算机可读介质的示例。计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。对于MQ消息的失败重试策略,消费者基本上无法知晓其在什么时间节点停止重试消费。有时消费者需要在MQ消息停止重试时,做一些业务处理。或者消费者在消费消息时,想要自主控制重试的次数和重试的时长等。比如有这样一个订单生产的流程,在成功扣减商品的库存后,需要MQ异步通知合作方去处理订单。但异步通知合作方时,可能会出现通知失败的情况,有些情况需要重试处理,而重试的次数和时长是本文档来自技高网...

【技术保护点】
1.一种消息队列重试方法,应用于消息队列的消息协商器端,其中,所述方法包括:/n从消息的生产者接收目标消息,所述目标消息包括消息体;/n记录所述目标消息的创建时间和已重试次数,并为所述目标消息配置过期时间和可重试的总重试次数;/n将所述目标消息及其对应的所述创建时间、所述已重试次数、所述总重试次数及过期时间一并下发给对应的消费者。/n

【技术特征摘要】
1.一种消息队列重试方法,应用于消息队列的消息协商器端,其中,所述方法包括:
从消息的生产者接收目标消息,所述目标消息包括消息体;
记录所述目标消息的创建时间和已重试次数,并为所述目标消息配置过期时间和可重试的总重试次数;
将所述目标消息及其对应的所述创建时间、所述已重试次数、所述总重试次数及过期时间一并下发给对应的消费者。


2.根据权利要求1所述的方法,其中,所述方法还包括:
在所述目标消息中设置一个用于指示所述目标消息是否为最后一次重试的标识;
接收所述消费者发送的所述目标消息的重试请求,并确定重试时间;
若所述重试时间已超过所述过期时间,且所述标识用于指示所述目标消息并非为最后一次重试,则设置所述标识为用于指示所述目标消息为最后一次重试;
将所述用于指示所述目标消息为最后一次重试的标识发送至所述消费者。


3.根据权利要求1所述的方法,其中,所述方法还包括:
当从消息的生产者接收到所述目标消息时,初始化所述目标消息的已重试次数为零。


4.根据权利要求3所述的方法,其中,所述方法还包括:
若所述目标消息在消费者端消费失败,从所述消息协商器接收所述目标消息的重试请求时,累计所述目标消息的已重试次数。


5.一种消息队列重试方法,应用于消息队列的消费者端,其中,所述方法包括:
接收消息队列的消息协商器下发的目标消息及其对应的创建时间、所述已重试次数、所述总重试次数及过期时间,所述目标消息包括消息体;
在消费所述目标消息时,根据所述已重试次...

【专利技术属性】
技术研发人员:马玉飞
申请(专利权)人:上海万物新生环保科技集团有限公司
类型:发明
国别省市:上海;31

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

1