我必須爬過表中的一些配置數據庫。每個記錄指定要從中讀取的模式。所以我們必須輪詢表格並適當地運行工作。運行時帶有多個數據源的彈簧批處理
被認爲使用Spring批處理(JdbcPagingItemReader)從所有配置的Schema中讀取數據。如果我必須配置這個,我怎樣才能使用Spring批處理?
我應該採取不同的閱讀器爲每個數據庫讀取多個作業,或者有什麼辦法可以在運行時發送數據源爲Spring批量讀取數據?
如何管理多個數據庫的單個彈簧批量。如果沒有,數據庫檢索(或收穫)還有其他建議嗎?
我必須爬過表中的一些配置數據庫。每個記錄指定要從中讀取的模式。所以我們必須輪詢表格並適當地運行工作。運行時帶有多個數據源的彈簧批處理
被認爲使用Spring批處理(JdbcPagingItemReader)從所有配置的Schema中讀取數據。如果我必須配置這個,我怎樣才能使用Spring批處理?
我應該採取不同的閱讀器爲每個數據庫讀取多個作業,或者有什麼辦法可以在運行時發送數據源爲Spring批量讀取數據?
如何管理多個數據庫的單個彈簧批量。如果沒有,數據庫檢索(或收穫)還有其他建議嗎?
有2個解決方案,使用Spring Batch的:
JobParameters
傳遞運行時DataSource
屬性(URL,用戶名,密碼....)。這意味着第一次讀取的邏輯(告訴你讀什麼的邏輯)必須在作業之外完成JobExecutionContext
和第二個使用之前存儲的值在運行時進行實際讀取如果您只是運行一個查詢來獲取一些數據然後運行其他查詢,那麼這並不是真正與Spring Batch所做的一致。這只是一個標準的JDBC或JPA類型的DAO /服務設置。您可以使用Quartz或Spring Scheduler來設置CRON值,以便檢查表格的時間。
@BrainC我只是運行一個查詢,它有一個處理器後面跟着一個作家。無論如何謝謝Brian.my問題解決 –
感謝您的答覆。但我已經以不同的方式解決了它。我有jdbcPagingItemReader的ovverridden setDatasource(),並根據Jobparameter鍵注入一個數據源值。所以我簡單地將鍵名映射到數據庫中的數據源名稱,並在運行時進行累積處理。正如你所說我也可以根據SetDataSource方法中的Jobparametrs構建一個數據源,但將數據庫密碼放在其他地方並不安全 –