【发布时间】:2013-12-06 02:31:23
【问题描述】:
用户可以通过两种方式生成报告。
- 用户单击前端的按钮,作业将运行以生成报告。
- 用户可以安排每周、每月等生成报告。
在场景 1 中,我决定首先将请求保存到一个表中,例如 "REQUEST_TBL"。在那之后,我将运行ThreadPoolTaskExecutor,它会从“REQUEST_TBL”中获取特定请求。可能有很多用户可以请求生成报告。但是每个用户一生最多只能生成 30 份报告(如果用户想要生成新报告,则需要删除所有旧报告)。
在场景 2 中,用户可以安排某个报告每周或每月生成。然后每周(或每月等)作业将运行并生成用户计划的此报告。
现在,我不确定如何实施报告生成器作业。我是否使用ThreadPoolTaskExecutor。或者使用相同的程序来处理用户请求和用户计划的报告请求。
我打算让每分钟运行一个作业来读取“REQUEST_TBL”,并且对于每条记录,我将运行 ThreadPoolTaskExecutor.execute()。但是如果有1000个用户同时请求报告,那么我应该如何实现线程的创建。同样对于预定的工作,我打算只在一天结束时运行它。计划的作业将从相同的“REQUEST_TBL”读取并查找计划的请求。对于场景 1,如果我想每隔 2 分钟运行一次作业,我应该运行到什么时候?因为可能是在那天结束时,需要运行计划的报告。另外,我想每隔 2 分钟运行一次作业,因为如果服务器出现故障,一旦服务器启动,就无法重新生成报告。
非常感谢您的建议
【问题讨论】:
-
你看过 Spring Batch 吗? docs.spring.io/spring-batch
标签: java multithreading spring scheduled-tasks