我想圍繞Spring批處理我的頭,雖然很多教程顯示了很好的代碼示例,但我覺得我錯過了「spring批處理引擎」的工作原理。Spring批處理 - 這個過程在哪裏運行
場景1 - 創建用戶時,在外部服務處創建用戶。
- Web請求
- CreateLocalUser()
- 推出工作CreateExternalUser()
CreateExternalUser()可能會失敗的,因爲很多的原因,所以我們希望能夠重試和記錄錯誤, Spring Batch可以爲我們做什麼。這也是一個與我們的本地用戶創建無關的解耦過程。
工作在哪裏運行?它是否會與web請求運行在同一線程中,這意味着最終用戶在獲取http狀態200之前必須等待作業完成?
想象一下,我有一個Web服務器和一個批處理服務器。我希望所有作業都可以在批處理服務器上運行,但作業本身可以從Web服務器啓動。春季批可以做到這一點?我是否需要某種類型的隊列,我可以從Web服務器寫入並從批處理服務器消耗,實際工作將從何處開始?
方案2 - 在巨大文件處理線,開始新的工作對於每個線在大文件
- 讀取線(1.000.000線)
- 用於使用從所述輸入參數的每一行開始新的作業文件。
處理1.000.000行很快,並且1.000.000個新作業將或多或少地同時啓動。這些運行在哪裏?他們是否對初始工作運行異步?我的服務器能夠處理所有這些或多或少的同時運行。
附加問題: 是否可以根據作業輸入參數查詢作業。即方案1,我想在我的網頁上使用Id 1234查看本地用戶時顯示CreateExternalUser作業狀態/錯誤。 CreateExternalUser工作具有輸入參數,用戶名:1234
針對場景2的詳細說明:http://stackoverflow.com/questions/31558148/spring-batch-process-lines-in-huge-file-start-new-job-for-each-line – heuts
謝謝!看這個https://github.com/spring-guides/gs-batch-processing個人讀者,作家,工作和步驟是有道理的。我無法包攬頭腦的是工作周圍的東西,如果這是春季批次的一部分或我需要管理自己的東西。即說我有10個工作。 3需要消耗AMQP並且一直運行。 3需要每小時運行一次(例如方案2),另外4個我可以在需要時手動啓動。我對Spring Batch瞭解的是如何定義Job的實際邏輯,而不是何時以及如何開始Job。我希望這是有道理的。 – heuts
除此之外。假設我使用Spring Batch Admin連接我的解決方案,並運行消耗AMQP的作業,每個消息都將作爲管理中的作業顯示出來,還是將消耗的消息顯示爲一項作業。 – heuts