我接到一个需求,要用脚本来查询DB并记录返回条数和耗时。脚本要能做到一次查询,和定时查询。工具配置文件里定义好query和执行次数,每个query执行这么多次后,计算出一个平均耗时。
- 一次查询的话结果写入csv文件,结束。
- 定时查询的话,用户定义好时间点,每天的这个时候开始查询,每次结果append到csv文件里
- 另外给用户一个timeout setting,有时候某个表正在刷新,或者有问题,那么query的时候就需要很久很久都不会返回结果,整个工具就会卡住。所以根据用户的timeout setting,如果一个query超过10分钟还没有返回,结果里记录timeout然后接着跑下一个query
一次查询的话,非常简单。
定时查询的话,用到了org.quartz-scheduler。
第一步,定义一个自己的job类来实现Job接口的execute()方法,这个方法定义了每次执行job的具体步骤。参数JobExecutionContext context非常有用,通过它可以拿到job details还有要传递给job的参数(JobDataMap)。
public class MyOwnJob implements Job
{
public void execute(JobExecutionContext context) throws JobExecutionException
{
...
}
}
JobDataMap datamap = paramJobExecutionContext.getJobDetail().getJobDataMap();