java版電子商務spring cloud分散式微服務b2b2c-Spring Cloud Task
Spring Cloud Task的目標是為Spring Boot應用程式提供建立短執行期微服務的功能。
在Spring Cloud Task中,我們可以靈活地動態執行任何任務,按需分配資源並在任務完成後檢索結果。Tasks是
Spring Cloud Data Flow中的一個基礎專案,瞭解springcloud架構可以加求求:三五三六二四七二五九,允許使用者
將幾乎任何Spring Boot應用程式作為一個短期任務執行。
Spring Cloud Task的生命週期
現代的雲平臺都是圍繞著長生命週期的服務而設計的,如web應用,一經啟用,除非手動去重啟應用,否則就會沒有
終點的持續執行。雖然大多數平臺都有方法在不重啟應用的情況下,將服務的生命週期推向終點,但每個服務的處理
結果難以以可重用的方式來維護。Spring Cloud Task可以在平臺環境中執行短生命週期的應用,並記錄這些應用的
結果,經由透過訊息通知的機制來整合各個tasks。透過這特性就可以實現讓短生命週期的應用像長生命週期的應用一
樣組成微服務架構。
Spring Task Cloud的方式對現代的雲環境是非常有用的,但它也在部署應用方面帶來新問題。如使用排程器(如corn)
來執行Spring Boot應用時,如何在應用結束後監控到其執行結果?
Spring Cloud Task採用的方法是,將Spring Boot應用分為開始、結束、以及正在執行等狀態。如批處理任務就是一個
清晰的短生命週期應用,Spring Cloud Task會監控指定任務的所有生命週期事件。
生命週期是一個任務task例項執行的全過程,也是一個被配置為task的Spring Boot應用被執行的過程(透過 新增@
EnableTask註解配置)。
在task剛剛開始執行時(CommandLineRunner或ApplicationRunner及其子類的例項被執行之前)TaskRespository會
建立一條task紀錄並將其標記為start狀態。start事件由spring框架的SmartLifecycle#start觸發。開始事件被觸發說明
了系統已經做好了執行CommandLineRunner或ApplicationRunner及其子類的例項的準備。
任務紀錄只有在 ApplicationContext被成功啟動後才會被紀錄。如果ApplicationContext沒有被成功啟動,那麼task
的相關資訊也不會被紀錄。
當Spring Boot應用的所有*Runner#run介面都被呼叫後,或者在ApplicationContext發生了失敗(由
ApplicationFailedEvent來表現),任務倉庫中此任務的執行結果都會被更新。
task 完成之後(*Runner#run方法被執行完)預設情況下會被關閉ApplicationContext。這個特性可以在配置檔案中
設定spring.cloud.task.closecontext_enable屬性為false來更改。
其實現原理如下面程式碼所示:
public class TaskLifecycleListener{ ... /** * 在發生task相關的事件後,會自動呼叫這個方法 * Utilizes {@link ApplicationEvent}s to determine the start, end, and failure of a * task. Specifically: * <ul> * <li>{@link ContextRefreshedEvent} - Start of a task</li> * <li>{@link ApplicationReadyEvent} - Successful end of a task</li> * <li>{@link ApplicationFailedEvent} - Failure of a task</li> * </ul> * * @param applicationEvent The application being listened for. */ @Override public void onApplicationEvent(ApplicationEvent applicationEvent) { if(applicationEvent instanceof ApplicationFailedEvent) { this.applicationFailedEvent = (ApplicationFailedEvent) applicationEvent; doTaskEnd(); } else if(applicationEvent instanceof ExitCodeEvent){ this.exitCodeEvent = (ExitCodeEvent) applicationEvent; } else if(applicationEvent instanceof ApplicationReadyEvent) { doTaskEnd(); } } }
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69952307/viewspace-2672620/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- java版電子商務spring cloud分散式微服務-大話Spring CloudJavaSpringCloud分散式微服務
- JAVA spring cloud boot b2b2c電子商務分散式微服務JavaSpringCloudboot分散式微服務
- (十四)JAVA springboot微服務b2b2c電子商務系統- Spring Cloud構建分散式電子商務平臺JavaSpring Boot微服務Cloud分散式
- spring cloud微服務分散式雲架構Spring Cloud ZuulSpringCloud微服務分散式架構Zuul
- spring cloud微服務分散式雲架構-Spring Cloud NetflixSpringCloud微服務分散式架構
- spring cloud微服務分散式雲架構-Spring Cloud BusSpringCloud微服務分散式架構
- spring cloud分散式微服務:Spring Cloud ConfigSpringCloud分散式微服務
- spring cloud微服務分散式雲架構 - Spring Cloud簡介SpringCloud微服務分散式架構
- Java架構-(一)spring cloud微服務分散式雲架構 - Spring Cloud簡介Java架構SpringCloud微服務分散式
- (一)spring cloud微服務分散式雲架構 - Spring Cloud簡介SpringCloud微服務分散式架構
- (一)spring cloud微服務分散式雲架構-Spring Cloud簡介SpringCloud微服務分散式架構
- java版Spring Cloud、Vue前後端分離社交電商微服務JavaSpringCloudVue後端微服務
- Spring Cloud構建分散式電子商務平臺:服務消費(基礎)SpringCloud分散式
- spring cloud微服務分散式雲架構-Spring Cloud Config環境庫SpringCloud微服務分散式架構
- java版b2b2c社交電商spring cloud分散式微服務-服務提供與呼叫JavaSpringCloud分散式微服務
- spring cloud spring boot 構建java版 分散式微服務 b2b2c o2o電子商務雲商平臺CloudSpring BootJava分散式微服務
- spring cloud微服務分散式雲架構-Spring Cloud 分散式的五大重點SpringCloud微服務分散式架構
- spring cloud微服務分散式雲架構 - Spring Cloud整合專案簡介SpringCloud微服務分散式架構
- spring cloud微服務分散式雲架構(一)-spring cloud 服務註冊與發現SpringCloud微服務分散式架構
- JAVA springboot微服務b2b2c電子商務系統-(七)高可用的分散式配置中心(Spring Cloud Config)JavaSpring Boot微服務分散式Cloud
- Java版分散式微服務雲開發架構 Spring Cloud 電子招標採購系統Java分散式微服務架構SpringCloud
- (三)spring cloud微服務分散式雲架構 - Spring Cloud整合專案簡介SpringCloud微服務分散式架構
- SpringCloud分散式微服務b2b2c電子商務-docker部署spring cloud專案(十一)SpringGCCloud分散式微服務Docker
- Spring Cloud-honghu Cloud分散式微服務雲系統SpringCloud分散式微服務
- spring cloud微服務分散式雲架構--服務註冊(consul)SpringCloud微服務分散式架構
- spring cloud微服務分散式雲架構--hystrix的使用SpringCloud微服務分散式架構
- spring cloud微服務分散式雲架構-Gateway入門SpringCloud微服務分散式架構Gateway
- spring cloud微服務分散式雲架構-Commons 普通抽象SpringCloud微服務分散式架構抽象
- spring cloud springboot mybatis 分散式 微服務 架構原始碼CloudSpring BootMyBatis分散式微服務架構原始碼
- spring cloud 和 阿里微服務spring cloud AlibabaSpringCloud阿里微服務
- Springcloud分散式微服務b2b2c電子商務一Spring Cloud常見問題(一)SpringGCCloud分散式微服務
- spring cloud微服務分散式雲架構-服務消費者FeignSpringCloud微服務分散式架構
- 分散式微服務Spring Cloud+Spring Boot電商商城技術及功能總結分散式微服務CloudSpring Boot
- spring cloud微服務分散式雲架構- Config 快速開始SpringCloud微服務分散式架構
- (十七)spring cloud微服務分散式雲架構-eureka 基礎SpringCloud微服務分散式架構
- SpringCloud分散式微服務b2b2c電子商務-Spring Cloud自定義引導屬性源SpringGCCloud分散式微服務
- spring cloud構建java版 b2b2c電子商務雲商平臺SpringCloudJava
- 微服務Spring Cloud17_Spring Cloud概述3微服務SpringCloud