一种延迟消息处理方法、装置、设备及存储介质制造方法及图纸

技术编号:28785382 阅读:13 留言:0更新日期:2021-06-09 11:20
本发明专利技术实施例提供了一种延迟消息处理方法、装置、设备及存储介质,所述数据库服务器与消费者和生产者连接,所述方法包括:获取由所述生产者生成且在预设延迟时间阈值内未成功发送给所述消费者的到期消息;根据所述到期消息生成延迟消息,并向所述消费者发送所述延迟消息;若未接收到所述消费者发送的针对所述延迟消息的响应消息,则再次向所述消费者发送所述延迟消息,直至接收到所述消费者发送的针对所述延迟消息的响应消息为止。通过不断根据源消息和重发字段生成延迟消息并放入延迟队列,以及不断通过预设执行命令拉取延迟队列中的到期消息,实现对到期消息中的延迟消息的自动轮询过程,方便且有效地保证针对延迟消息的可靠通知。靠通知。靠通知。

【技术实现步骤摘要】
一种延迟消息处理方法、装置、设备及存储介质


[0001]本专利技术涉及计算机
,特别是涉及一种延迟消息处理方法、装置、设备及存储介质。

技术介绍

[0002]目前主流延迟队列的实现,一种是基于内存的延迟消息存储方式,主要使用时间轮等方式存储延迟消息,然而这种基于内存存储并不可靠;为了实现可靠存储,另一种是使用持久化的组件(例如MYSQL,持久化的Redis等)实现延迟消息的存储。
[0003]在获取延迟消息之后,需要保证将消息成功通知到消费者,才可以认为该消息处理成功,并将通知成功的消息从消息队列中清除。针对保证消息通知成功方面,目前现有的一个处理方案是通过一个额外的消息记录表记录正在处理中的消息,如果到期之后仍然没有成功的响应,则需要再通过定时轮询将其重新加入消息队列的方式来实现,然而这种处理方式过于繁杂。

技术实现思路

[0004]鉴于上述问题,提出了本专利技术实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种延迟消息处理方法、装置、设备及存储介质。
[0005]为了解决上述问题,本专利技术实施例公开了一种应用于数据库服务器,所述数据库服务器与消费者和生产者连接,所述方法包括:
[0006]获取由所述生产者生成且在预设延迟时间阈值内未成功发送给所述消费者的到期消息;
[0007]根据所述到期消息生成延迟消息,并向所述消费者发送所述延迟消息;
[0008]若未接收到所述消费者发送的针对所述延迟消息的响应消息,则再次向所述消费者发送所述延迟消息,直至接收到所述消费者发送的针对所述延迟消息的响应消息为止。
[0009]可选地,所述到期消息包括源消息和重发字段;所述根据所述到期消息生成延迟消息,包括:
[0010]对所述到期消息中的重发字段的值进行加一操作,并根据自增后的重发字段和源消息生成延迟消息。
[0011]可选地,所述数据库服务器具有延迟队列服务;所述向所述消费者发送所述延迟消息,包括:
[0012]获取当前时间和延迟时间,并根据所述当前时间和延迟时间生成所述延迟消息的到期时间;
[0013]将所述延迟消息和所述延迟消息的到期时间写入所述延迟队列;
[0014]通过所述延迟队列根据所述到期时间将所述延迟消息异步通知给所述消费者。
[0015]可选地,所述若未接收到所述消费者发送的针对所述延迟消息的响应消息,则再次向所述消费者发送所述延迟消息,包括:
[0016]若未接收到所述消费者针对所述延迟消息的响应消息,通过预设执行命令获取到期消息;
[0017]当所述到期消息包括所述延迟消息时,根据所述延迟消息中的源消息和重发字段再次生成延迟消息,并向所述消费者发送再次生成的延迟消息。
[0018]可选地,还包括:
[0019]若接收到所述消费者发送的响应消息,则删除延迟队列中的延迟消息;
[0020]或,若未接收到所述消费者发送的响应消息,则在根据所述延迟消息生成延迟消息之后,删除延迟队列中的延迟消息。
[0021]可选地,所述延迟队列中不存在相同的延迟消息;其中,具有相同源消息的多个延迟消息中所包含的重发字段不同。
[0022]可选地,在获取所述生产者在预设延迟时间内未成功发送给所述消费者的到期消息之前,还包括:
[0023]接收所述生产者发送的源消息,并对所述源消息增加重发字段;
[0024]将增加重发字段后的源消息写入延迟队列,以便后续根据所述源消息和所述重发字段值生成延迟消息;其中,所述重发字段的初始值为0。
[0025]本专利技术实施例还公开了一种延迟消息处理装置,应用于数据库服务器,所述数据库服务器与消费者和生产者连接,所述装置包括:
[0026]到期消息获取模块,用于获取由所述生产者生成且在预设延迟时间阈值内未成功发送给所述消费者的到期消息;
[0027]第一延迟消息发送模块,用于根据所述到期消息生成延迟消息,并向所述消费者发送所述延迟消息;
[0028]第二延迟消息发送模块,用于若未接收到所述消费者发送的针对所述延迟消息的响应消息,则再次向所述消费者发送所述延迟消息,直至接收到所述消费者发送的针对所述延迟消息的响应消息为止。
[0029]可选地,所述到期消息包括源消息和重发字段;所述第一延迟消息发送模块包括:
[0030]延迟消息生成子模块,用于对所述到期消息中的重发字段的值进行加一操作,并根据自增后的重发字段和源消息生成延迟消息。
[0031]可选地,所述数据库服务器具有延迟队列服务;所述第一延迟消息发送模块包括:
[0032]到期时间生成子模块,用于获取当前时间和延迟时间,并根据所述当前时间和延迟时间生成所述延迟消息的到期时间;
[0033]到期时间写入子模块,用于将所述延迟消息和所述延迟消息的到期时间写入所述延迟队列;
[0034]延迟消息通知子模块,用于通过所述延迟队列根据所述到期时间将所述延迟消息异步通知给所述消费者。
[0035]可选地,所述第二延迟消息发送模块包括:
[0036]到期消息获取子模块,用于若未接收到所述消费者针对所述延迟消息的响应消息,通过预设执行命令获取到期消息;
[0037]延迟消息生成子模块,用于当所述到期消息包括所述延迟消息时,根据所述延迟消息中的源消息和重发字段再次生成延迟消息,并向所述消费者发送再次生成的延迟消
息。
[0038]可选地,所述第二延迟消息发送模块还包括:
[0039]延迟消息删除子模块,用于若接收到所述消费者发送的响应消息,则删除延迟队列中的延迟消息;
[0040]延迟消息删除子模块,还用于若未接收到所述消费者发送的响应消息,则在根据所述延迟消息再次生成延迟消息之后,删除延迟队列中的延迟消息。
[0041]可选地,所述延迟队列中不存在相同的延迟消息;其中,具有相同源消息的多个延迟消息中所包含的重发字段不同。
[0042]可选地,在获取所述生产者在预设延迟时间内未成功发送给所述消费者的到期消息之前,所述装置还包括:
[0043]重发字段增加模块,用于接收所述生产者发送的源消息,并对所述源消息增加重发字段;
[0044]源消息写入模块,用于将增加重发字段后的源消息写入延迟队列,以便后续根据所述源消息和所述重发字段值生成延迟消息;其中,所述重发字段的初始值为0。
[0045]本专利技术实施例还公开了一种设备,包括:处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现任一项所述延迟消息处理方法的步骤。
[0046]本专利技术实施例还公开了一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现任一项所述延迟消息处理方法的步骤。
[0047]本专利技术实施例包括以下优点:
[0048]在本专利技术实施例中,按照到期消息生成延迟消息并向本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种延迟消息处理方法,其特征在于,应用于数据库服务器,所述数据库服务器与消费者和生产者连接,所述方法包括:获取由所述生产者生成且在预设延迟时间阈值内未成功发送给所述消费者的到期消息;根据所述到期消息生成延迟消息,并向所述消费者发送所述延迟消息;若未接收到所述消费者发送的针对所述延迟消息的响应消息,则再次向所述消费者发送所述延迟消息,直至接收到所述消费者发送的针对所述延迟消息的响应消息为止。2.根据权利要求1所述的方法,其特征在于,所述到期消息包括源消息和重发字段;所述根据所述到期消息生成延迟消息,包括:对所述到期消息中的重发字段的值进行加一操作,并根据自增后的重发字段和源消息生成延迟消息。3.根据权利要求1所述的方法,其特征在于,所述数据库服务器具有延迟队列服务;所述向所述消费者发送所述延迟消息,包括:获取当前时间和延迟时间,并根据所述当前时间和延迟时间生成所述延迟消息的到期时间;将所述延迟消息和所述延迟消息的到期时间写入所述延迟队列;通过所述延迟队列根据所述到期时间将所述延迟消息异步通知给所述消费者。4.根据权利要求1所述的方法,其特征在于,所述若未接收到所述消费者发送的针对所述延迟消息的响应消息,则再次向所述消费者发送所述延迟消息,包括:若未接收到所述消费者针对所述延迟消息的响应消息,通过预设执行命令获取到期消息;当所述到期消息包括所述延迟消息时,根据所述延迟消息中的源消息和重发字段再次生成延迟消息,并向所述消费者发送再次生成的延迟消息。5.根据权利要求4所述的方法,其特征在于,还包括:若接收到所述消费者发送的响应消息,则删除延迟队列中的延迟消息;或,若未接收到所...

【专利技术属性】
技术研发人员:周桂镔
申请(专利权)人:百果园技术新加坡有限公司
类型:发明
国别省市:

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

1