成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Spring Cloud Task 一個允許短期運行的微服務組件

開發 架構
Spring Cloud Task使用關系數據庫存儲已執行任務的結果。雖然你可以在沒有數據庫的情況下開始開發任務(任務的狀態記錄為任務存儲庫更新的一部分),但對于生產環境,你希望使用受支持的數據庫。

簡介

Spring Cloud Task允許用戶使用Spring Cloud開發和運行短期的微服務,并在本地、云中甚至在Spring Cloud數據流上運行它們。只需添加@EnableTask并將應用程序作為Spring Boot應用程序運行(單個應用程序上下文)。

Spring Cloud Task使創建短期微服務變得容易。它提供了在生產環境中按需執行短期JVM進程的功能。

環境要求

你需要安裝Java(Java 8或更高的版本)。要進行構建,還需要安裝Maven。

數據庫要求

Spring Cloud Task使用關系數據庫存儲已執行任務的結果。雖然你可以在沒有數據庫的情況下開始開發任務(任務的狀態記錄為任務存儲庫更新的一部分),但對于生產環境,你希望使用受支持的數據庫。Spring Cloud Task 目前支持以下數據庫:

  • DB2
  • H2
  • HSQLDB
  • MySql
  • Oracle
  • Postgres
  • SqlServer

依賴管理

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-task</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>

配置文件

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)。因為執行這些回調方法都是在不同的階段執行的,所以只會影響那個階段的事件并不會影響其它階段事件。

限制任務執行

如果你要控制每個任務只允許同時允許一個,那么我們可以通過如下方式控制:

添加依賴:

<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-core</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-jdbc</artifactId>
</dependency>

上面2個依賴是必須的,這是限制任務執行所需要的。

添加配置:

spring:
cloud:
task:
singleInstanceEnabled: true

開啟單任務執行。

完畢!!

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2018-06-01 23:08:01

Spring Clou微服務服務器

2017-09-05 14:05:11

微服務spring clou路由

2022-03-07 15:21:54

微服務組件運維

2023-12-19 09:33:40

微服務監控

2021-12-14 06:59:39

微服務Kubernetes架構

2024-02-06 18:05:54

微服務SpringCloud

2023-03-20 08:00:00

公共云開發Spring Clo

2024-08-05 10:03:53

2017-06-26 09:06:10

Spring Clou微服務架構

2022-03-02 09:00:00

微服務架構開發

2017-12-20 15:37:39

Spring Clou微服務架構

2024-07-29 08:24:43

2024-07-10 10:51:39

SpringEureka數據中心

2021-01-15 09:08:44

Spring Clou微服務架構分布式

2018-03-16 09:36:04

微服務Spring ClouDubbo

2017-09-04 16:15:44

服務網關架構

2023-11-09 18:01:46

JavaSpring容器化

2021-05-20 13:22:31

架構運維技術

2020-06-30 07:58:39

微服務Spring BootCloud

2024-11-21 16:09:22

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲国产精选 | 亚洲美女网站 | 欧美 中文字幕 | 天天干干 | www.夜夜骑| 啪一啪| 成人黄色av网址 | 国产精品爱久久久久久久 | 久久久久精 | 国产高清在线精品 | 国产二区av | 在线看免费的a | 亚洲中午字幕 | 操久久久| 欧美激情国产日韩精品一区18 | 精品九九九 | 91久久精品日日躁夜夜躁欧美 | 99re视频在线| 日韩一区二区三区在线视频 | 国产成人精品一区二区三区视频 | 精品二区 | 国产视频中文字幕在线观看 | 黄色一级毛片 | 亚洲高清视频在线 | 亚洲视频免费在线观看 | 成人国产精品一级毛片视频毛片 | 久久久久久久久91 | 久久99蜜桃综合影院免费观看 | 亚洲精品无人区 | 91视频在线观看免费 | 激情欧美一区二区三区 | 久久精品亚洲一区二区三区浴池 | 亚洲色图插插插 | 天天拍天天射 | 亚洲自拍偷拍视频 | 久久久成人免费一区二区 | 国产精品一区二区av | 99精品久久久久久久 | 亚洲免费视频网站 | 高清视频一区二区三区 | 久久免费香蕉视频 |