首页 > 解决方案 > 关闭挂钩代码未完全执行

问题描述

我有一个 Spring 批处理应用程序,在关闭挂钩中我添加了一些代码和平,检查是否有任何批处理处于运行状态,如果是运行状态,则优雅地关闭它,它也包括 DB 调用,但问题是和平的代码没有完全执行。

有时它卡在 log.info("************explorer.getJobInstanceCount(job.getName()) "+explorer.getJobInstanceCount(job.getName()));

有时在 List jobInstances = explorer.findJobInstancesByJobName(job.getName(), 0, explorer.getJobInstanceCount(job.getName()));

explorer.getJobInstanceCount 和 explorer.findJobInstancesByJobName 方法正在进行数据库调用以从批处理元数据表中获取详细信息。

我在 UNIX 机器上运行它,环境是 Dev。这不是我必须在此之后做其他事情的完整代码,但我无法继续,因为我无法获得当前正在运行的作业(如果有的话)。

在日志中可以看到

[Thread-3] JdbcTemplate - 执行准备好的 SQL 查询
[Thread-3] JdbcTemplate - 执行准备好的 SQL 语句 [SELECT COUNT(*) from BATCH_JOB_INSTANCE where JOB_NAME = ?]

但在那之后就什么都没有了。

标签: javaspringspring-bootspring-batchjava-threads

解决方案


推荐阅读