2015-11-18 78 views
1

我必須爬過表中的一些配置數據庫。每個記錄指定要從中讀取的模式。所以我們必須輪詢表格並適當地運行工作。運行時帶有多個數據源的彈簧批處理

被認爲使用Spring批處理(JdbcPagingItemReader)從所有配置的Schema中讀取數據。如果我必須配置這個,我怎樣才能使用Spring批處理?

我應該採取不同的閱讀器爲每個數據庫讀取多個作業,或者有什麼辦法可以在運行時發送數據源爲Spring批量讀取數據?

如何管理多個數據庫的單個彈簧批量。如果沒有,數據庫檢索(或收穫)還有其他建議嗎?

回答

1

有2個解決方案,使用Spring Batch的:

  • 通過JobParameters傳遞運行時DataSource屬性(URL,用戶名,密碼....)。這意味着第一次讀取的邏輯(告訴你讀什麼的邏輯)必須在作業之外完成
  • 通過2個步驟完成一個任務,第一個任務是執行「元數據」讀取和存儲結果JobExecutionContext和第二個使用之前存儲的值在運行時進行實際讀取
+0

感謝您的答覆。但我已經以不同的方式解決了它。我有jdbcPagingItemReader的ovverridden setDatasource(),並根據Jobparameter鍵注入一個數據源值。所以我簡單地將鍵名映射到數據庫中的數據源名稱,並在運行時進行累積處理。正如你所說我也可以根據SetDataSource方法中的Jobparametrs構建一個數據源,但將數據庫密碼放在其他地方並不安全 –

1

如果您只是運行一個查詢來獲取一些數據然後運行其他查詢,那麼這並不是真正與Spring Batch所做的一致。這只是一個標準的JDBC或JPA類型的DAO /服務設置。您可以使用Quartz或Spring Scheduler來設置CRON值,以便檢查表格的時間。

+0

@BrainC我只是運行一個查詢,它有一個處理器後面跟着一個作家。無論如何謝謝Brian.my問題解決 –