我正在尝试计算春季批处理作业的总时间。我用弹簧靴来触发这项工作。在春季启动触发春季批处理作业之前,作业需要的数据源和其他bean由春季启动配置,这会花费一些时间。我是否应该考虑这段时间来计算Spring Boot作业执行所需的总时间,因为它使用Spring Boot配置的数据源和bean?
答案 0 :(得分:0)
我是否也应该考虑这次计算总时间 通过春季启动工作
简单的答案是否定的。除非您重新连接数据源并在每次执行作业时刷新配置。
当您说应用程序(启动或批处理)已启动并准备执行时,这意味着所有组件都已初始化,相关性已解决,连接已建立,并且它只是在等待任务/触发器开始执行。
这意味着,数据源配置或上下文设置所花费的时间不属于作业执行时间。
答案 1 :(得分:0)
我还应该考虑这次来计算Spring Boot作业执行所需的总时间
这取决于您要测量的内容。如果要衡量整个spring boot应用程序的执行时间(从操作系统的角度来看,是运行JVM进程的总时间),那么是的,您需要包括所有内容。
如果仅想测量Spring Batch作业的执行时间,则可以使用JobExecutionListener
,例如:
class ExecutionTimeJobListener implements JobExecutionListener {
private Logger logger = LoggerFactory.getLogger(ExecutionTimeJobListener.class);
private StopWatch stopWatch = new StopWatch();
@Override
public void beforeJob(JobExecution jobExecution) {
stopWatch.start();
}
@Override
public void afterJob(JobExecution jobExecution) {
stopWatch.stop();
logger.info("Job took " + stopWatch.getTotalTimeSeconds() + "s");
}
}