工作需要需要同步mysql数据库中的流程任务信息到mongodb,当流程较多时,同步时间会比较长,所以需要一个进度条,来知晓同步的进度。

使用到的技术

springboot, springboot的异步注解,vue-element的Progress进度条,redis

实现步骤

1 页面触发数据同步

2 后台进行数据同步处理

查询出当前时间戳(暂记为SJC),查询出需要同步的数据的总数量,以SJC_count作为key(并发概率极低,所以时间戳就能满足我的需求),总数量作为值,存入到redis中,然后开始进行同步数据的操作(异步方法),每完成一批数据的同步,将这批数据的数量增加到key为SJC的redis对应的值中(这个地方需要先获取SJC对应的值,然后在此基础上增加,所以需要加synchronized以防出现问题)
注:需要开启springboot的异步支持
参考代码:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

页面收到响应后进行处理

页面收到总数量和时间戳,然后每隔1秒(时间间隔根据业务需要来定)去后台查询执行进度(后台从redis中查SJC_count对应的值作为总数量,查SJC对应的值作为当前数量,然后求出进度返回给页面),当进度为100%时,终止定时任务。
参考代码:
在这里插入图片描述

Logo

前往低代码交流专区

更多推荐