消息重试方法、系统、电子设备及存储介质技术方案

技术编号:37523287 阅读:15 留言:0更新日期:2023-05-12 15:46
本申请提供一种消息重试方法、系统、电子设备及存储介质,该方法应用于包括服务器和RabbitMQ中间件的控制系统,RabbitMQ中间件中设置有延迟队列、中转队列和至少一个重试队列,该方法包括:服务器在对消息队列中的第一消息消费失败时,生成第一消息对应的重试消息并存储至延迟队列,重试消息为统一的目标格式,消息队列中存储的消息共用延迟队列;在延迟队列中的重试消息流转至中转队列时,服务器获取重试消息并在确定重试消息满足重试条件时,将重试消息对应的第一消息存储至目标重试队列,服务器对目标重试队列中的第一消息进行消费。本申请可减少延迟队列和重试队列的数量,对符合条件的消息重新推送,提高消息消费成功率。成功率。成功率。

【技术实现步骤摘要】
消息重试方法、系统、电子设备及存储介质


[0001]本申请涉及通信
,尤其涉及一种消息重试方法、系统、电子设备及存储介质。

技术介绍

[0002]消息队列RabbitMQ是实现了高级消息队列协议(Advanced Message Queuing Protocol,AMQP)的开源消息代理软件,亦称面向消息的中间件。在业务设计过程中会经常使用RabbitMQ,以实现松耦合的功能应用。目前队列消费的场景逐渐增多,但是因为一些不可控的因素(如,请求第三方超时,数据库超时等)会导致队列消费不能正常结束,影响业务的流转。为了尽可能降低人为干预,提升系统性能,常常在异常的地方增加重试机制,通过建立延迟队列、重试队列的方式实现重试。
[0003]现有方式中在基于重试机制实现重试时,由于业务的差异往往一种消费者对应匹配的一种延迟队列和重试队列,虽然完成了重试功能,但涉及的延迟队列和重试队列会成倍的增加,不易于维护。

技术实现思路

[0004]鉴于上述问题,本申请实施例提供一种克服上述问题或者至少部分地解决上述问题的消息重试方法、系统、电子设备及存储介质。
[0005]第一方面,本申请实施例提供一种消息重试方法,应用于控制系统,所述控制系统包括服务器和RabbitMQ中间件,所述RabbitMQ中间件中设置有延迟队列、中转队列和至少一个重试队列,所述方法包括:
[0006]所述服务器在对消息队列中的第一消息消费失败的情况下,生成所述第一消息对应的重试消息、将所述重试消息存储至所述延迟队列,所述重试消息为统一的目标格式,所述消息队列中存储的消息共用所述延迟队列;
[0007]在所述延迟队列中的所述重试消息流转至所述中转队列的情况下,所述服务器获取所述中转队列中的所述重试消息,并在确定所述重试消息满足重试条件时,将所述重试消息对应的第一消息存储至所述至少一个重试队列中的目标重试队列,每个重试队列对应于一业务类型,所述目标重试队列对应的业务类型与所述第一消息对应的业务类型匹配;
[0008]所述服务器消费所述目标重试队列中的所述第一消息。
[0009]第二方面,本申请实施例提供一种消息重试的控制系统,所述控制系统包括服务器和RabbitMQ中间件,所述RabbitMQ中间件中设置有延迟队列、中转队列和至少一个重试队列;
[0010]所述服务器用于:在对消息队列中的第一消息消费失败的情况下,生成所述第一消息对应的重试消息、将所述重试消息存储至所述延迟队列,所述重试消息为统一的目标格式,所述消息队列中存储的消息共用所述延迟队列;
[0011]在所述延迟队列中的所述重试消息流转至所述中转队列的情况下,所述服务器还
用于:获取所述中转队列中的所述重试消息,并在确定所述重试消息满足重试条件时,将所述重试消息对应的第一消息存储至所述至少一个重试队列中的目标重试队列,每个重试队列对应于一业务类型,所述目标重试队列对应的业务类型与所述第一消息对应的业务类型匹配;
[0012]所述服务器还用于:消费所述目标重试队列中的所述第一消息。
[0013]第三方面,本申请实施例提供一种电子设备,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现第一方面所述的消息重试方法的步骤。
[0014]第四方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现第一方面所述的消息重试方法的步骤。
[0015]本申请实施例的技术方案,服务器在对消息队列中的第一消息消费失败的情况下,基于第一消息生成统一目标格式的重试消息,将重试消息存储至公用的延迟队列,可以实现不同业务场景共用同一延迟队列,减少延迟队列的数量;在延迟队列中的重试消息流转至中转队列后,服务器获取中转队列中的重试消息,并在确定重试消息满足重试条件时,将重试消息对应的第一消息存储至目标重试队列,可以通过中转队列为延迟队列流转出的重试消息提供一暂存空间,避免延迟队列流转出的重试消息直接进入重试队列,且可以实现对符合条件的消息重新进行推送,提高消息的消费成功率,降低后期人工接入的次数;通过针对每一业务类型设置一重试队列,可以减少重试队列的数量。
[0016]且本申请提供的重试机制在实现多个业务场景共用一套延迟队列和中转队列,同一业务类型的业务共用一重试队列的基础上,在有新业务应用时易于移植,易于维护,易于迭代,保障了业务的正常进行,同时可提高处理效率,降低维护成本。
附图说明
[0017]图1表示本申请实施例提供的控制系统对应的架构示意图之一;
[0018]图2表示本申请实施例提供的消息重试方法的示意图;
[0019]图3表示本申请实施例提供的RabbitMQ中间件配置的交换机以及队列的关联关系示意图;
[0020]图4表示本申请实施例提供的消息重试方法的整体实施流程示意图;
[0021]图5表示本申请实施例提供的消息重试方法的交互过程示意图;
[0022]图6表示本申请实施例提供的控制系统对应的架构示意图之二;
[0023]图7表示本申请实施例提供的电子设备的结构框图。
具体实施方式
[0024]下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0025]应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的
特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。
[0026]在本申请的各种实施例中,应理解,下述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
[0027]本申请针对现有技术中在基于重试机制实现重试功能时,存在的延迟队列和重试队列成倍增加,不易于维护的问题,引入了一种新的消息重试机制,能够解决延迟队列、重试队列多的问题,且在有新业务应用时易于移植,能够保障业务的正常进行,同时可提高开发效率。其中,本申请的消息重试机制可以基于go语言、Java语言或者其他语言实现。
[0028]下面对本申请提供的消息重试方法进行介绍,本申请提供的消息重试方法,应用于控制系统,参见图1所示,所述控制系统包括服务器和RabbitMQ中间件,所述RabbitMQ中间件中设置有延迟队列、中转队列和至少一个重试队列,服务器可以与RabbitMQ中间件通信,向RabbitMQ中间件中的队列发送数据、访问RabbitMQ中间件中的队列。参本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种消息重试方法,应用于控制系统,其特征在于,所述控制系统包括服务器和RabbitMQ中间件,所述RabbitMQ中间件中设置有延迟队列、中转队列和至少一个重试队列,所述方法包括:所述服务器在对消息队列中的第一消息消费失败的情况下,生成所述第一消息对应的重试消息、将所述重试消息存储至所述延迟队列,所述重试消息为统一的目标格式,所述消息队列中存储的消息共用所述延迟队列;在所述延迟队列中的所述重试消息流转至所述中转队列的情况下,所述服务器获取所述中转队列中的所述重试消息,并在确定所述重试消息满足重试条件时,将所述重试消息对应的第一消息存储至所述至少一个重试队列中的目标重试队列,每个重试队列对应于一业务类型,所述目标重试队列对应的业务类型与所述第一消息对应的业务类型匹配;所述服务器消费所述目标重试队列中的所述第一消息。2.根据权利要求1所述的方法,其特征在于,所述服务器生成所述第一消息对应的重试消息,包括:所述服务器对所述第一消息中的消息内容进行排序、拼接,对拼接结果进行加密生成消息内容签名;所述服务器将所述第一消息对应的消息来源、消息内容和消息内容签名封装为统一的消息结构体,以获取所述重试消息;其中,所述第一消息对应的消息来源为预先配置。3.根据权利要求1所述的方法,其特征在于,所述方法还包括:所述RabbitMQ中间件配置延迟交换机和所述延迟队列,设置所述延迟队列的队列属性并将所述延迟交换机和所述延迟队列进行绑定,所述队列属性包括限制时长、所述延迟队列与重试中转交换机的第一绑定关系;所述RabbitMQ中间件配置所述重试中转交换机和所述中转队列,并将所述重试中转交换机和所述中转队列进行绑定;所述RabbitMQ中间件配置重试交换机和所述至少一个重试队列,并将所述重试交换机和所述至少一个重试队列进行绑定。4.根据权利要求3所述的方法,其特征在于,所述服务器将所述重试消息存储至所述延迟队列,包括:所述服务器将所述重试消息发送至所述延迟交换机,由所述延迟交换机将所述重试消息存储至所述延迟队列。5.根据权利要求3所述的方法,其特征在于,所述在所述延迟队列中的所述重试消息流转至所述中转队列的情况下,所述服务器获取所述中转队列中的所述重试消息,包括:在所述重试消息在所述延迟队列中的存储时长达到所述限制时长的情况下,所述重试中转交换机基于所述第一绑定关系获取所述延迟队列流转出的所述重试消息、将所述重试消息存储至所述中转队列;所述服务器访问所述中转队列、获取所述中转队列中的所述重试消息。6.根据权利要求2所述的方法,其特征在于,所述服务器在获取所述中转队列中的所述重试消息之后,所述方法还包括:对所述重试消息进行解析,获取所述第一消息对应的消息内容签名;将所述第一消息对应的消息...

【专利技术属性】
技术研发人员:马单徐东明徐锐王健徐蕾
申请(专利权)人:中国电信股份有限公司
类型:发明
国别省市:

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

1