我正在使用java配置使用彈簧批量編寫各種作業。監視彈簧批處理作業的進度
我需要獲得工作的當前狀態 該步驟當前正在運行的(我可能會在同一時間運行多個步驟) 哪些步驟失敗(狀態和退出代碼) 等
我看到的唯一在線的例子是基於XML的春天批次和我的只想使用java配置。
謝謝。
我正在使用java配置使用彈簧批量編寫各種作業。監視彈簧批處理作業的進度
我需要獲得工作的當前狀態 該步驟當前正在運行的(我可能會在同一時間運行多個步驟) 哪些步驟失敗(狀態和退出代碼) 等
我看到的唯一在線的例子是基於XML的春天批次和我的只想使用java配置。
謝謝。
我在spring batch meta data tables上使用了這兩個查詢來了解作業進度和步驟細節。
SELECT * FROM BATCH_JOB_EXECUTION ORDER BY START_TIME DESC;
SELECT * FROM BATCH_STEP_EXECUTION WHERE JOB_EXECUTION_ID=? ORDER BY STATUS;
有了第一次查詢,我先找到JOB_EXECUTION_ID
相當於我的作業執行,然後使用該ID在第二個查詢找到有關特定步驟的詳細信息。
此外,您的配置選擇(Java或XML)與Spring Batch元數據無關。如果你正在保存數據,那麼它的XML配置或者Java配置是沒有關係的。
對於基於Java的監控 - 您可以使用JobExplorer
& JobRepository
豆查詢工作等
例如List<JobInstance>
from jobExplorer.getJobInstances
& jobExplorer.getJobExecutions(jobInstance)
等
從JobExecutions你可以得到StepExecutions等等。
您可能需要設置JobRegistryBeanPostProcessor
豆如下JobExplorer
& JobRepository
才能正常工作。
@Bean
public JobRegistryBeanPostProcessor jobRegistryBeanPostProcessor(
JobRegistry jobRegistry) {
JobRegistryBeanPostProcessor jobRegistryBeanPostProcessor = new JobRegistryBeanPostProcessor();
jobRegistryBeanPostProcessor.setJobRegistry(jobRegistry);
return jobRegistryBeanPostProcessor;
}
謝謝。 我在考慮更多的春季批處理本地java代碼來做這些測試。 – Tomer
另一種選擇是使用JobExplorer
入口點瀏覽運行或歷史的工作和措施的執行。由於數據可能會從持久存儲中重新獲得,因此可能不包含執行激活時可能存在的易失性字段。
List<JobExecution> jobExecutions = jobExplorer.getJobExecutions(jobInstance);
for (JobExecution jobExecution : jobExecutions) {
jobExecution.getStepExecutions();
//read step info
}
而對於創建jobExplorer你必須使用廠家:
import org.springframework.batch.core.explore.support.JobExplorerFactoryBean;
JobExplorerFactoryBean factory = new JobExplorerFactoryBean();
factory.setDataSource(dataSource);
factory.getObject();
你有沒有設置數據庫爲你的工作嗎? 因爲你可以在春季批處理表中讀取所有這些信息。 –
是的,但我認爲使用本地春季批處理代碼會是更好的選擇。你的想法? – Tomer