创建任务配置类
接下来,我们需要创建一个任务配置类,用于配置任务的输入和输出。
代码语言:javascript复制@Configuration
@EnableTask
public class StringReverseTaskConfiguration {
@Bean
public TaskConfigurer taskConfigurer() {
return new DefaultTaskConfigurer(dataSource());
}
@Bean
public DataSource dataSource() {
return new EmbeddedDatabaseBuilder()
.setType(EmbeddedDatabaseType.H2)
.addScript("classpath:org/springframework/cloud/task/schema-h2.sql")
.build();
}
@Bean
public CommandLineRunner commandLineRunner(TaskExplorer taskExplorer) {
return args -> {
List<TaskExecution> taskExecutions = taskExplorer.getTaskExecutions(taskExplorer.getLatestTaskExecution("string-reverse-task").getTaskName());
for (TaskExecution taskExecution : taskExecutions) {
System.out.println("Execution: " taskExecution.getExecutionId() " / Task name: " taskExecution.getTaskName() " / Start time: " taskExecution.getStartTime() " / End time: " taskExecution.getEndTime() " / Exit code: " taskExecution.getExitCode());
}
};
}
@Bean
public Task stringReverseTask() {
return new SimpleTaskBuilder<String>()
.name("string-reverse-task")
.input("Hello World!")
.tasklet(new StringReverseTask())
.build();
}
}
在上面的代码中,我们创建了一个名为stringReverseTask的任务,使用SimpleTaskBuilder类创建任务对象。我们通过name方法来为任务命名,通过input方法设置任务的输入,通过tasklet方法设置任务的执行逻辑。这里我们使用了之前实现的StringReverseTask类作为任务执行逻辑。
运行任务
现在,我们已经实现了任务的输入、输出以及任务处理逻辑,接下来我们需要运行任务。
我们可以通过CommandLineRunner类运行任务,CommandLineRunner接口在Spring Boot应用程序启动后执行一些预定义的任务。我们在之前的StringReverseTaskConfiguration类中定义了一个CommandLineRunner类,该类通过TaskExplorer类查询任务执行结果并将结果输出到控制台。
现在我们可以运行Spring Boot应用程序,看到任务的执行结果:
代码语言:javascript复制Received input: Hello World!
Output: !dlroW olleH
Execution: 1 / Task name: string-reverse-task / Start time: 2022-04-23 17:09:27.149 / End time: 2022-04-23 17:09:27.155 / Exit code: 0
在上面的输出中,我们可以看到任务的输入和输出,以及任务的执行结果。此外,我们还可以看到任务的执行时间和退出码。