先行一步
VMware 提供培訓和認證,加速您的進步。
瞭解更多我們很高興地宣佈 Spring Cloud Task 1.0.0.M2 版本釋出。這是 Spring Cloud Task 專案的第二個里程碑,帶來了一些令人興奮的新特性!
隨著 Spring Cloud Task 的 M1 版本釋出,我們引入了任務的概念、@EnableTask
註解以及具有終結狀態的微服務的一般概念。從那時起,我們一直非常忙碌。新特性的一些亮點包括:
讓我們看看每個特性都包含什麼。
在任務執行之前或之後(或兩者)執行邏輯可能很有用。此版本引入了一個介面 TaskExecutionListener
以及註解 @BeforeTask
和 @AfterTask
,允許使用者定義在任務執行之前或完成後執行的邏輯。
將 Spring Cloud Task 與 Spring Cloud Stream 整合,為開發者編排資料微服務建立了一個強大的工具。在此版本的 Spring Cloud Task 中,我們在這兩個專案之間添加了一些整合點。
第一個整合點是能夠基於透過流傳送的訊息啟動任務。透過使用 @EnableTaskLauncher
註解和正確的依賴項建立一個 Boot 應用程式,您將獲得一個 Spring Cloud Stream Sink,它監聽 TaskLaunchRequest
訊息。對於接收到的每條訊息,launcher sink 將啟動請求的任務。
@SpringBootApplication
@EnableTaskLauncher
public class TaskSinkApplication {
public static void main(String[] args) {
SpringApplication.run(TaskSinkApplication.class, args);
}
}
截至本文撰寫之時,本地和 Apache YARN 的啟動器均已可用,CloudFoundry、Apache Mesos 和 Kubernetes 的啟動器目前都在開發中。
Spring Cloud Task 和 Spring Cloud Stream 之間的另一個整合點是 Spring Cloud Task 將事件釋出到 Spring Cloud Stream 通道的能力。在您的專案中新增 spring-cloud-task-stream
依賴項(以及您選擇的 Spring Cloud Stream binder),任務將在啟動和結束時自動發出訊息。具體來說,任務將在這些點發出 TaskExecution
,允許上游應用程式在任務啟動、結束以及獲取結果時收到通知。
使用 Spring Cloud Task 的一個常見用例是執行 Spring Batch 作業。因此,我們在一個新模組 spring-cloud-task-batch
中添加了這兩個專案之間幾個有趣的整合點。
第一個整合點是透過 Spring Cloud Stream 通道傳送批處理資訊性訊息。類似於 Spring XD 容器提供的功能,作為任務執行的批處理作業(具有適當的依賴項)可以在無需額外配置的情況下發出資訊性訊息。以下監聽器會發出某種事件:
JobExecutionListener
StepExecutionListener
ChunkListener
ItemReadListener
ItemProcessListener
ItemWriteListener
SkipListener
第二個整合點是一個新的 PartitionHandler
,即 DeployerPartitionHandler
。此 PartitionHandler
實現允許遠端分割槽批處理作業中的工作節點作為任務啟動,而不是提前部署並要求監聽工作。這帶來的好處是工作節點只在執行工作時才部署和執行,並且一旦工作完成就應該關閉和清理。DeployerPartitionHandler
將任務的啟動委託給 Spring Cloud Deployer 實現,因此任何支援任務啟動的 deployer 實現都可以與這個新的 PartitionHandler
一起使用。
理解事物如何工作最簡單的方法是親眼看到它們執行。因此,我們加強了示例模組,提供了此處提到的所有功能的示例以及一些更基本的使用案例。您可以在 Github 上檢視我們的新示例。
在我們釋出 RC 版本之前還有一些工作要做,RC 版本應該與 Spring Cloud Data Flow 的相關釋出同步。我們將忙於處理 Spring Cloud Task 中的任何最終問題,並提供 Spring Cloud Data Flow 所需的任何其他功能。
Spring Cloud Task 是一個令人興奮的新專案,我們認為它填補了企業開發中一個服務不足的領域。但是,我們想知道您的想法。請透過 Github Issues、StackOverflow 或直接在 Twitter 上告訴我們!