【发布时间】:2021-06-03 22:38:50
【问题描述】:
春季启动应用程序。 在设置中,我在应用程序启动时禁用了自动运行作业(Spring Batch):
spring:
batch:
job:
enabled: false
任务计划在 75 秒后开始:
@Autowired
JobLauncher jobLauncher;
@Autowired
Job job;
@Scheduled(fixedRate = 10000000, initialDelay = 75000)
public void launchJob() throws Exception {
JobParameters params = new JobParametersBuilder()
.addString("JobID", String.valueOf(System.currentTimeMillis()))
.toJobParameters();
jobLauncher.run(job, params);
}
75 秒后启动 Job 方法。但是当应用程序启动时,Spring Batch 仍然运行。由于某种原因,它忽略了设置。 以下是它在 pom.xml 文件中的拼写方式:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-batch</artifactId>
</dependency>
我尝试使用 Spring Batch 创建一个单独的简单应用程序,那里一切正常,发布显然按计划进行。我不明白主应用程序中可能存在什么冲突?
【问题讨论】:
-
“应用程序启动时 Spring Batch 仍在运行”是什么意思?如果
launchJob只在 75 秒后运行,还有什么能立即启动? -
缓存可能。试试 mvn clean
-
他的意思是他通过应用程序属性禁用了批处理,但它仍然在 75 秒后开始批处理,这是 launchJob 的初始延迟。他不希望它开始。
-
如果@BeshambherChaukhwan 说的是真的,那么我认为你的期望是错误的。根据 Spring 文档,“默认情况下,将创建一个 Runner,并且上下文中的所有作业都将在启动时执行。使用 spring.batch.job.enabled=false 禁用此行为。”该标志仅与作业是否运行有关,因为它们在启动时处于上下文中。使用 \@scheduled 注解安排的作业不受该标志的影响。这是一个我认为说同样的话的教程:dimitr.im/spring-batch-schedu
-
应用程序启动时立即开始执行作业。并且应该只在 75 秒后运行 JobLauncher。运行(作业,参数)
标签: java spring-boot spring-batch