您现在的位置是:亿华云 > IT科技
Spring Cloud Task 一个允许短期运行的微服务组件
亿华云2025-10-09 12:59:52【IT科技】8人已围观
简介简介Spring Cloud Task允许用户使用Spring Cloud开发和运行短期的微服务,并在本地、云中甚至在Spring Cloud数据流上运行它们。只需添加@Enab
Spring Cloud Task允许用户使用Spring Cloud开发和运行短期的允许运行微服务,并在本地、短期的微云中甚至在Spring Cloud数据流上运行它们。服务只需添加@EnableTask并将应用程序作为Spring Boot应用程序运行(单个应用程序上下文)。组件
Spring Cloud Task使创建短期微服务变得容易。允许运行它提供了在生产环境中按需执行短期JVM进程的短期的微功能。
环境要求你需要安装Java(Java 8或更高的服务版本)。要进行构建,组件还需要安装Maven。允许运行
数据库要求Spring Cloud Task使用关系数据库存储已执行任务的短期的微结果。虽然你可以在没有数据库的服务情况下开始开发任务(任务的状态记录为任务存储库更新的一部分),但对于生产环境,组件你希望使用受支持的允许运行数据库。Spring Cloud Task 目前支持以下数据库:
DB2H2HSQLDBMySqlOraclePostgresSqlServer依赖管理
spring-boot-starter-data-jpa
spring-cloud-starter-task
mysql-connector-java
配置文件server:
port: 8082
---
spring:
datasource:
driverClassName: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/tasks?短期的微serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true
username: root
password: root
type: com.zaxxer.hikari.HikariDataSource
hikari:
minimumIdle: 10
maximumPoolSize: 200
autoCommit: true
idleTimeout: 30000
poolName: MasterDatabookHikariCP
maxLifetime: 1800000
connectionTimeout: 30000
connectionTestQuery: SELECT 1
---
spring:
h2:
console:
enabled: true
settings:
web-allow-others: true
path: /h2
---
spring:
application:
name: taskDemo
---
logging:
level:
org.springframework.cloud.task: DEBUG简单任务@SpringBootApplication
@EnableTask
public class SpringCloudTaskDemoApplication {
@Bean
public CommandLineRunner helloRunner() {
return new CommandLineRunner() {
@Override
public void run(String... args) throws Exception {
System.out.println("开始执行任务") ;
TimeUnit.SECONDS.sleep(1) ;
System.out.println("任务执行完成") ;
}
};
}
public static void main(String[] args) {
SpringApplication.run(SpringCloudTaskDemoApplication.class, args);
}
}注意这里需要@EnableTask开启功能,然后自定义了一个CommandLineRunner类型的源码下载服务Bean。我们的任务都应该在CommandLineRunner或者ApplicationRunner中执行。
执行run方法执行完以后我们的JVM进程也跟着结束了。这就是所谓的短期任务了,我们不需要任务一直执行,只需要在需要的时候执行即可。
任务执行完以后会在数据表中记录相关的执行结果信息。
这些表记录了本次任务执行的相关信息,成功,失败等。
事件监听我们任务的执行在每一个节点上都可以进行相关的监听处理
@Component
public class TaskListenerConfig {
@BeforeTask
public void before(TaskExecution taskExecution) {
System.out.println("任务执行前") ;
}
@AfterTask
public void after(TaskExecution taskExecution) {
System.out.println("任务执行后") ;
}
@FailedTask
public void fail(TaskExecution taskExecution, Throwable throwable) {
System.out.println("任务执行失败," + throwable.getMessage()) ;
}
}以上是通过注解的方式实现,我们也可以通过实现TaskExecutionListener接口的方式实现。
@Component
public class DemoListener implements TaskExecutionListener {
@Override
public void onTaskStartup(TaskExecution taskExecution) {
}
@Override
public void onTaskEnd(TaskExecution taskExecution) {
}
@Override
public void onTaskFailed(TaskExecution taskExecution, Throwable throwable) {
}
}任务监听发生异常如果TaskExecutionListener事件处理程序引发异常,云服务器提供商则该事件处理程序的所有侦听器处理都将停止。例如,如果已启动三个onTaskStartup侦听器,并且第一个onTaskStartup事件处理程序引发异常,则不会调用其他两个onTaskStartup方法。但是,会调用TaskExecutionListeners的其他事件处理程序(onTaskEnd和onTaskFailed)。因为执行这些回调方法都是在不同的阶段执行的,所以只会影响那个阶段的事件并不会影响其它阶段事件。
限制任务执行如果你要控制每个任务只允许同时允许一个,那么我们可以通过如下方式控制:
添加依赖:
spring-integration-core
spring-integration-jdbc
</dependency>上面2个依赖是必须的,这是限制任务执行所需要的。
添加配置:
spring:
cloud:
task:
singleInstanceEnabled: true开启单任务执行。
完毕!!
很赞哦!(321)
相关文章
- 当投资者经过第二阶段的认真学习之后又充满了信心,认为自己可以在市场上叱咤风云地大干一场了。但没想到“看花容易绣花难”,由于对理论知识不会灵活运用.从而失去灵活应变的本能,就经常会出现小赢大亏的局面,结果往往仍以失败告终。这使投资者很是困惑和痛苦,不知该如何办,甚至开始怀疑这个市场是不是不适合自己。在这种情况下,有的人选择了放弃,但有的意志坚定者则决定做最后的尝试。
- 所谓的xyz域名是何种域名?新手如何了解xyz域名?
- 用户在挑选好域名时怎么做?新手域名选择须知什么?
- 新手怎么做判断域名的好坏?有什么方法?
- 以上的就是为大家介绍的关于域名的详解
- 新手对域名的选择注意哪几点?有什么因素影响?
- 用户如何选择有利于网站优化的域名?有什么方法?
- 如何快速寻找到高pr域名?寻找高pr域名方法
- 二、如何选择合适的域名
- 为什么说域名是网站建设的重要部分?域名作用这么大吗?