diff --git a/scenario-task/README.adoc b/scenario-task/README.adoc index d6182fe..4c1a2e6 100644 --- a/scenario-task/README.adoc +++ b/scenario-task/README.adoc @@ -30,6 +30,8 @@ docker run spring/scenario-task:latest ### Properties +All properties should be prefixed with `io.spring.` + * *jobName* - The name associated with the batch job. The default is "scenario-job". * *stepName* - The name associated with the single step for the job. The default is "scenario-step". * *failBatch* - If true, the batch will throw a {@link ExpectedException}. Defaults to false. diff --git a/scenario-task/pom.xml b/scenario-task/pom.xml index c2c795e..c645ac7 100644 --- a/scenario-task/pom.xml +++ b/scenario-task/pom.xml @@ -5,7 +5,7 @@ org.springframework.boot spring-boot-starter-parent - 2.6.3 + 2.7.18 io.spring @@ -16,8 +16,8 @@ 8 - 2021.0.0 - 1.15.3 + 2021.0.5 + 1.19.7 21.1.0.0 diff --git a/scenario-task/src/main/java/io/spring/scenariotask/ScenarioTaskApplication.java b/scenario-task/src/main/java/io/spring/scenariotask/ScenarioTaskApplication.java index bb3d80c..25c7b95 100644 --- a/scenario-task/src/main/java/io/spring/scenariotask/ScenarioTaskApplication.java +++ b/scenario-task/src/main/java/io/spring/scenariotask/ScenarioTaskApplication.java @@ -2,8 +2,10 @@ package io.spring.scenariotask; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.task.configuration.EnableTask; @SpringBootApplication +@EnableTask public class ScenarioTaskApplication { public static void main(String[] args) { diff --git a/scenario-task/src/main/java/io/spring/scenariotask/configuration/ScenarioProperties.java b/scenario-task/src/main/java/io/spring/scenariotask/configuration/ScenarioProperties.java index 425a43b..0bbaa6c 100644 --- a/scenario-task/src/main/java/io/spring/scenariotask/configuration/ScenarioProperties.java +++ b/scenario-task/src/main/java/io/spring/scenariotask/configuration/ScenarioProperties.java @@ -117,4 +117,17 @@ public class ScenarioProperties { public void setIncludeRunidIncrementer(boolean includeRunidIncrementer) { this.includeRunidIncrementer = includeRunidIncrementer; } + + @Override + public String toString() { + return "ScenarioProperties{" + + "jobName='" + jobName + '\'' + + ", stepName='" + stepName + '\'' + + ", failBatch=" + failBatch + + ", failTask=" + failTask + + ", launchBatchJob=" + launchBatchJob + + ", pauseInSeconds=" + pauseInSeconds + + ", includeRunidIncrementer=" + includeRunidIncrementer + + '}'; + } } diff --git a/scenario-task/src/main/java/io/spring/scenariotask/configuration/ScenarioTaskConfiguration.java b/scenario-task/src/main/java/io/spring/scenariotask/configuration/ScenarioTaskConfiguration.java index 6221e32..b8448b7 100644 --- a/scenario-task/src/main/java/io/spring/scenariotask/configuration/ScenarioTaskConfiguration.java +++ b/scenario-task/src/main/java/io/spring/scenariotask/configuration/ScenarioTaskConfiguration.java @@ -42,7 +42,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.ApplicationRunner; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.cloud.task.configuration.EnableTask; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.jdbc.datasource.DataSourceTransactionManager; @@ -52,7 +51,6 @@ import org.springframework.jdbc.datasource.DataSourceTransactionManager; * * @author Glenn Renfro */ -@EnableTask @EnableBatchProcessing @Configuration @EnableConfigurationProperties(ScenarioProperties.class) @@ -61,10 +59,7 @@ public class ScenarioTaskConfiguration { private static final Log logger = LogFactory.getLog(ScenarioTaskConfiguration.class); @Configuration - @ConditionalOnProperty( - value = "io.spring.launchBatchJob", - havingValue = "true", - matchIfMissing = true) + @ConditionalOnProperty(value = "io.spring.launch-batch-job", havingValue = "true", matchIfMissing = true) static class BatchConfig { @Autowired public JobBuilderFactory jobBuilderFactory; @@ -80,16 +75,17 @@ public class ScenarioTaskConfiguration { @Bean public Job pausedemoAgain() { + logger.info("properties=:" + properties); SimpleJobBuilder jobBuilder = this.jobBuilderFactory.get(properties.getJobName()) .start(this.stepBuilderFactory.get(properties.getStepName()) + .allowStartIfComplete(true) .tasklet((contribution, chunkContext) -> { logger.info(String.format("%s is starting", properties.getStepName())); if (properties.getPauseInSeconds() > 0) { - logger.info(String.format("%s is pausing", properties.getStepName())); + logger.info(String.format("%s is pausing for %d seconds", properties.getStepName(), properties.getPauseInSeconds())); Thread.sleep(properties.getPauseInSeconds() * 1000); } logger.info(String.format("%s is completing", properties.getStepName())); - if (jobExecutionCount() == 1 && properties.isFailBatch()) { throw new ExpectedException("Exception thrown during Batch Execution"); } @@ -151,6 +147,10 @@ public class ScenarioTaskConfiguration { public ApplicationRunner applicationRunner(ScenarioProperties properties) { return args -> { logger.info("ApplicationRunner Executing for ScenarioTaskApplication"); + if (!properties.isLaunchBatchJob() && properties.getPauseInSeconds() > 0) { + logger.info(String.format("Task is pausing for %d seconds", properties.getPauseInSeconds())); + Thread.sleep(properties.getPauseInSeconds() * 1000); + } if (properties.isFailTask()) { throw new ExpectedException("Exception thrown during Task Execution"); } diff --git a/scenario-task/src/test/java/io/spring/scenariotask/ScenarioTaskApplicationTests.java b/scenario-task/src/test/java/io/spring/scenariotask/ScenarioTaskApplicationTests.java index f054aa1..6338d74 100644 --- a/scenario-task/src/test/java/io/spring/scenariotask/ScenarioTaskApplicationTests.java +++ b/scenario-task/src/test/java/io/spring/scenariotask/ScenarioTaskApplicationTests.java @@ -83,7 +83,7 @@ public class ScenarioTaskApplicationTests { } private static TaskExplorer taskExplorer() { - TaskExecutionDaoFactoryBean taskExecutionDaoFactoryBean = new TaskExecutionDaoFactoryBean(dataSource, "TASK_"); + TaskExecutionDaoFactoryBean taskExecutionDaoFactoryBean = new TaskExecutionDaoFactoryBean(dataSource); return new SimpleTaskExplorer(taskExecutionDaoFactoryBean); }