我們有許多批量作業,今天通過cron表達式在單個應用程序中安排。我們希望更多地分離這些工作,並將其轉移到春季雲任務。每個春季雲任務觸發器是否需要一個JVM進程?
但是閱讀文檔[1],我得出結論,我必須使用triggertask
(源代碼),然後發送TaskLaunchRequest
到tasklauncher
(接收器)以最終啓動新過程。
這意味着(如果我只有一個任務/批)我需要至少以下JVM進程運行以觸發一個新的過程:
- 流服務器
- triggertask(源)
- tasklauncher (sink)
OK,流服務器和tasklauncher將爲任何即將到來的任務共享,但triggertask只能爲單個任務使用cron定義,因此必須複製fo r任何即將到來的任務定義。所以我需要至少一個「保姆流程」來完成每項任務?
真的嗎?這聽起來像是一個巨大的矯枉過正......從我的角度來看,我期望cron調度是任務定義的核心功能,因此唯一需要的就是流量服務器。
我理解這是否正確或有什麼我錯過了?春季雲環境中有更簡單的方法嗎?我真的很喜歡在需要時讓流服務器啓動新的JVM的想法,但所有這些額外的過程真的覺得是錯誤的方法。
如果這應該在CloudFoundry上運行,例如那麼這意味着我有一個cron調度器用於單個作業,成本爲35美元/月(因爲從Java BuildPack 4.0開始,只有512MB的JVM進程將不再啓動[2]) - 這是一個昂貴的cron定義...
[1] https://github.com/spring-cloud/spring-cloud-stream-app-starters/tree/master/triggertask/spring-cloud-starter-stream-source-triggertask [2] https://www.cloudfoundry.org/just-released-java-buildpack-4-0/
非常感謝這些細節!所以,如果我理解正確,將來會有一個本地調度程序集成,在我們的情況下,從CF中反正呢?我可以遵循什麼問題嗎? – domi
嗨,@Domi。具體來說,CF中有一個CF-Scheduler MVP,可以通過SCDF的REST-API調度和啓動任務。這個想法是在SCDF中定義DSL,並使用CF-Scheduler中的REST-API將其安排在期望的日期/時間或cron中。 CF計劃程序團隊大致針對8月份的GA版本。 我們還計劃與SCDF直接交互CF調度程序(通過它的API和服務綁定)。我們的儀表板將能夠爲每個任務提供日期/時間和cron表達式。 –