介绍SpringCloudTask允许用户使用SpringCloud开发和运行短期微服务,并在本地、云端甚至SpringCloud数据流上运行。只需添加@EnableTask并将应用程序作为SpringBoot应用程序(单个应用程序上下文)运行。SpringCloudTask可以轻松创建短期微服务。它提供了在生产环境中按需执行短期JVM进程的能力。环境要求您需要安装Java(Java8或更高版本)。要构建,还需要安装Maven。数据库要求SpringCloudTask使用关系数据库来存储执行任务的结果。虽然您可以在没有数据库的情况下启动开发任务(任务的状态被记录为任务存储库更新的一部分),但对于生产您希望使用受支持的数据库。SpringCloudTask当前支持以下数据库:DB2H2HSQLDBMySqlOraclePostgresSqlServer依赖管理org.springframework.bootspring-boot-starter-data-jpaorg.springframework.cloudspring-cloud-starter-taskmysqlmysql-connector-java复制代码artifactId>配置文件server:port:8082---spring:datasource:driverClassName:com.mysql.cj.jdbc.Driverurl:jdbc:mysql://localhost:3306/tasks?serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true用户名:root密码:root类型:com.zaxxer.hikari.HikariDataSourcehikari:minimumIdle:10maximumPoolSize:200autoCommit:trueidleTimeout:30000poolName:MasterDatabookHikariCPmaxLifetime:1800000connectionTimeout:30000connectionTestQuery:SELECT1---spring:h2:console:enabled:truesettings:web-allow-others:truepath:/h2---spring:application:name:taskDemo---logging:level:org.springframework.cloud.task:DEBUG简单任务@SpringBootApplication@EnableTaskpublicclassSpringCloudTaskDemoApplication{@BeanpublicCommandLineRunnerhelloRunner(){returnnewCommandLineRunner(){@Overridepublicvoidrun(String...args)throwsException{System.out.println("开始执行任务");TimeUnit.SECONDS.sleep(1);System.out.println("任务执行完成");}};}publicstaticvoidmain(String[]args){SpringApplication.run(SpringCloudTaskDemoApplication.class,args);}}注意需要@EnableTask来开启功能,然后自定义一个CommandLineRunner类型的Bean。我们的任务应该在CommandLineRunner或ApplicationRunner中执行。执行完run方法后,我们的JVM进程也就结束了。这就是所谓的短期任务。我们不需要一直执行任务,只需要在需要的时候执行。任务执行后,相关的执行结果信息会记录在数据表中。这些表记录了这个任务执行的相关信息,比如成功和失败。事件监控我们任务的执行可以在每个节点上被监控和处理}@AfterTaskpublicvoidafter(TaskExecutiontaskExecution){System.out.println("任务执行后");}@FailedTaskpublicvoidfail(TaskExecutiontaskExecution,Throwablethrowable){System.out.println("任务执行失败,"+throwable.getMessage());以上是通过注解实现的,我们也可以通过实现TaskExecutionListener接口来实现。@ComponentpublicclassDemoListenerimplementsTaskExecutionListener{@OverridepublicvoidonTaskStartup(TaskExecutiontaskExecution){}@OverridepublicvoidonTaskEnd(TaskExecutiontaskExecution){}@OverridepublicvoidonTaskFailed(TaskExecutiontaskExecution,Throwablethrowable){}}任事务监听发送异常TaskenerTaskener事件处理程序抛出异常,该事件处理程序的所有侦听器处理将停止。例如,如果启动了三个onTaskStartup侦听器,并且第一个onTaskStartup事件处理程序抛出异常,则不会调用其他两个onTaskStartup方法。但是,会调用TaskExecutionListeners的其他事件处理程序(onTaskEnd和onTaskFailed)。因为这些回调方法的执行是在不同的阶段执行的,所以只会影响那个阶段的事件,不会影响其他阶段的事件。限制任务执行如果想控制每个任务同时只允许一个任务,那么我们可以通过以下方式控制:添加依赖:org.springframework.integrationspring-integration-coreorg.springframework.integrationspring-integration-jdbc以上两个依赖是必须的,这是任务执行所需的限制。添加配置:spring:cloud:task:singleInstanceEnabled:true开启单任务执行。完全的!!