异步导出功能设计优化

前后端使用异步+任务表的方式来对导出功能进行优化。

[1] 前端发起http请求,后台创建task任务,保存到task表中,将task_id传入异步线程中,然后返回前端200。
[2 ]前端自动弹出任务列表,可以看到当前导出任务信息、状态:导出中。
[3] 后台的异步线程继续运行导出任务,当导出完毕后,将文件输出到服务器,然后根据task_id去更新这条导出任务的状态为:已完成。
[4] 前端可以通过轮询的方式,去获取任务列表,然后用户可以看到该任务的状态为已完成,然后点击可以从服务器下载该文件。

具体开发注意点:

1、异步线程将文件导出保存到服务器上的时候,需要先创建一个当天日期的文件夹(20230531),若存在则不创建。将文件保存到这个文件夹里面。【这里需要注意,这个“20230531”尽量事先定义,然后再赋值task的时间的时候,还有创建文件夹的时候都用这个“20230531”,我怕会出现24点的时候,如果用LocalTime.now()会导致不是同一天】
2、上述中的判断文件夹存在+创建文件夹操作需要加锁。
2、定时任务每天24点30分去清理【今天日期-2天】的服务器所有文件夹。
3、前端任务列表只对task是【已完成状态】,且【任务创建时间是今天+昨天】的导出任务显示:【下载按钮】
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务