System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本公开的实施方式涉及数据处理,更具体地,本公开的实施方式涉及延迟事件的处理方法、介质、装置和计算设备。
技术介绍
1、本部分旨在为本公开的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
2、随着互联网和智能终端的发展,为了满足人们的不同业务需求,业务平台的功能越来越多样化。在订单系统中,存在一种“在一段时间之后,完成一个工作任务”的业务需求,例如在购物平台中,用户下单后超时未支付时,该订单取消,或者用户收到货超时未确认时,核销订单。上述业务需求也可以扩展到其他业务平台,在某个事件之后的一定时间之后,触发另一事件。
3、目前,可以通过定时任务扫描的方式在程序内部结合数据库实现触发延迟事件执行。但是,定时任务调度扫描数据库触发延迟事件的实现方式存在对业务数据库压力较大,处理过程不够及时,并且扩展性较差的技术问题,导致用户体验不佳。
技术实现思路
1、本公开提供一种延迟事件的处理方法、介质、装置和计算设备,以解决相关技术中延迟事件处理过程中数据库压力大以及处理失效性差的问题,实现了减轻数据库压力以及提高延迟事件的处理时效性。
2、在本公开实施方式的第一方面中,提供了一种方法,包括:获取事件生成模块生成的各延迟事件,确定各所述延迟事件对应的执行时间;其中,所述延迟事件和所述执行时间关联存储于延迟事件数据库;
3、对于任一延迟事件,基于预设的延迟消息队列和所述执行时间对所述延迟事件进行监控,在到达执行时间时将所述延迟
4、执行所述待执行事件,根据所述待执行事件的执行结果更新所述延迟事件数据库;
5、每间隔预设周期时间,根据第一定时任务扫描所述延迟事件数据库;
6、若确定所述延迟事件数据库中存在已到达执行时间、且未执行的延迟事件,则执行所述延迟事件,根据所述延迟事件的执行结果更新所述延迟事件数据库。
7、在本公开的一个实施例中,该确定所述延迟事件的执行时间,包括:
8、确定所述延迟事件的事件属性;
9、获取预先生成的第一映射关系;所述第一映射关系为所述延迟事件的延迟时长和所述事件属性之间的映射关系;
10、根据所述第一映射关系和所述事件属性,确定所述延迟事件的延迟时长;
11、根据所述延迟事件的事件生成时间和所述延迟时长,确定所述延迟事件的执行时间。
12、在本公开的另一个实施例中,在基于预设的延迟消息队列和所述执行时间对所述延迟事件进行监控之前,该方法还包括:
13、获取预先生成的第二映射关系;所述第二映射关系为所述延迟事件的监控方式和事件属性之间的映射关系;
14、根据所述第二映射关系和所述延迟事件的事件属性,确定所述延迟事件对应的执行时间监控方式;所述监控方式包括延迟消息队列监控和定时任务扫描监控。
15、在本公开的又一实施例中,延迟消息队列中预设有包含多个不同时长对应的延迟时长的延迟时长集合;
16、该基于预设的延迟消息队列和所述执行时间对所述延迟事件进行时长监控,并在到达执行时间时将所述延迟事件作为待执行事件,包括:
17、根据所述执行时间与当前时间确定所述延迟事件的剩余时间,在所述延迟时长集合中确定与所述剩余时间匹配的延迟时长,并重复执行下述时间更新步骤,直至在所述延迟事件的剩余时间小于预设的更新时间阈值时停止更新;
18、根据所述剩余时间在所述延迟消息队列中对所述延迟事件进行监控,并在到达执行时间时将所述延迟事件确定为待执行事件;
19、其中,所述时间更新步骤包括:
20、在经过当前的延迟时长后,确定所述延迟事件的剩余时间是否大于预设的更新时间阈值;
21、若所述剩余时间大于所述更新时间阈值,则确定更新后的延迟时长。
22、在本公开的再一个实施例中,该在所述延迟时长集合中确定与所述剩余时间匹配的延迟时长,包括:
23、分别确定所述剩余时间和所述延迟时长集合中各延迟时长之间的时间差;
24、确定各所述时间差中的最小正值时间差,将所述最小正值时间差对应的延迟时长确定为与所述剩余时间匹配的延迟时长。
25、在本公开的再一个实施例中,该根据所述剩余时间在所述延迟消息队列中对所述延迟事件进行监控,并在到达执行时间时将所述延迟事件确定为待执行事件,包括:
26、在所述延迟消息队列中实时监控所述剩余时间;
27、若所述剩余时间为零,则确定所述延迟事件到达所述执行时间,将所述延迟事件确定为待执行事件。
28、在本公开的再一个实施例中,该方法还包括:
29、在根据所述执行时间与当前时间确定所述延迟事件的剩余时间,在所述延迟时长集合中确定与所述剩余时间匹配的延迟时长,并重复执行下述时间更新步骤,直至在所述延迟事件的剩余时间小于预设的更新时间阈值时停止更新之后,将所述延迟事件和所述剩余时间存储于延迟消息队列中的rides缓存,根据所述执行事件和当前时间更新所述延迟事件的剩余时间;
30、每间隔预设周期时间,若根据第二定时任务确定所述rides缓存中存在剩余时间为零、且未执行的延迟事件,将所述延迟事件确定为待执行事件。
31、在本公开的再一个实施例中,该执行所述待执行事件,根据所述待执行事件的执行结果更新所述延迟事件数据库,包括:
32、调用所述延迟事件对应的执行模块执行所述待执行事件;
33、接收所述执行模块反馈的执行结果,若所述执行结果为执行成功,则将所述延迟事件数据库中所述延迟事件的事件状态更新为已执行。
34、在本公开的再一个实施例中,该方法还包括:
35、若所述执行模块反馈的执行结果为未执行成功,或者未接收到所述执行结果,则重新调用所述执行模块执行所述待执行事件。
36、在本公开的再一个实施例中,该方法还包括:响应于所述延迟事件的执行剩余时间的查询请求,根据所述延迟事件的执行时间和当前时间,确定所述延迟事件的剩余时间,并展示所述剩余时间。
37、在本公开实施方式的第二方面中,提供了一种装置,包括:
38、执行时间确定模块,用于获取事件生成模块生成的各延迟事件,确定各所述延迟事件对应的执行时间;其中,所述延迟事件和所述执行时间关联存储于延迟事件数据库;
39、事件监控模块,用于对于任一延迟事件,基于预设的延迟消息队列和所述执行时间对所述延迟事件进行监控,在到达执行时间时将所述延迟事件作为待执行事件;
40、第一事件执行模块,用于执行所述待执行事件,根据所述待执行事件的执行结果更新所述延迟事件数据库;
41、事件扫描模块,用于每间隔预设周期时间,根据第一定时任务扫描所述延迟事件数据库;
42、第二事件执行模块,用于若确定所述延迟事件数据库中存在为已到达执行时间、且未执行的本文档来自技高网...
【技术保护点】
1.一种延迟事件的处理方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述延迟消息队列中预设有包含多个不同时长对应的延迟时长的延迟时长集合;
3.根据权利要求2所述的方法,其特征在于,所述在所述延迟时长集合中确定与所述剩余时间匹配的延迟时长,包括:
4.根据权利要求2所述的方法,其特征在于,所述根据所述剩余时间在所述延迟消息队列中对所述延迟事件进行监控,并在到达执行时间时将所述延迟事件确定为待执行事件,包括:
5.根据权利要求2所述的方法,其特征在于,在根据所述执行时间与当前时间确定所述延迟事件的剩余时间,在所述延迟时长集合中确定与所述剩余时间匹配的延迟时长,并重复执行下述时间更新步骤,直至在所述延迟事件的剩余时间小于预设的更新时间阈值时停止更新之后,所述方法还包括:
6.根据权利要求1所述的方法,其特征在于,所述执行所述待执行事件,根据所述待执行事件的执行结果更新所述延迟事件数据库,包括:
7.根据权利要求1-6任一项所述的方法,其特征在于,在将所述延迟事件和所述执行时间关联存储于延迟事
8.一种延迟事件的处理装置,其特征在于,包括:
9.一种存储介质,其特征在于,包括:所述存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1至7中任意一项所述的方法。
10.一种计算设备,其特征在于,包括:处理器以及与所述处理器通信连接的存储器;
...【技术特征摘要】
1.一种延迟事件的处理方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述延迟消息队列中预设有包含多个不同时长对应的延迟时长的延迟时长集合;
3.根据权利要求2所述的方法,其特征在于,所述在所述延迟时长集合中确定与所述剩余时间匹配的延迟时长,包括:
4.根据权利要求2所述的方法,其特征在于,所述根据所述剩余时间在所述延迟消息队列中对所述延迟事件进行监控,并在到达执行时间时将所述延迟事件确定为待执行事件,包括:
5.根据权利要求2所述的方法,其特征在于,在根据所述执行时间与当前时间确定所述延迟事件的剩余时间,在所述延迟时长集合中确定与所述剩余时间匹配的延迟时长,并重复执行下述时间更新步骤,直至在所...
【专利技术属性】
技术研发人员:李宝深,王国云,于江碧,
申请(专利权)人:杭州网易再顾科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。