2014-01-27 117 views
0

我有一個基本的彈簧批處理作業(spring-core-3.1.1)應用程序安裝程序,它使用quartz scheduler(1.8.6)運行。它看起來像這樣,將批處理作業參數彈簧複製操作

 - spring batch job has a mysql datasource to save job states in spring batch schema 
    - job Reader is a csvFile reader using class org.springframework.batch.item.file.FlatFileItemReader 
    - Writer is simple custom ItemWriter (output is on console) 
    - quartz scheduler is used to setup crontrigger alongwith jobdetail bean 
    - scheudler runs the job every 10 seconds (*/10 * * * * ?) 

我想自定義此設置通過讀取CSV文件只有每個作業實例線的X號,而不是例如讀取整個文件如果文件中有10行,並且我想每步讀取2行,則作業實例應只讀取2行而不是10行。爲此,我想根據讀取的行數給出工作的動態參數。因此,對於每個作業執行而言,作業實例都有獨特的增量參數。像光標到文件閱讀器一樣。

如何實現它?

我的JobDetail屬性PARAM

<property name="jobDataAsMap"> 
     <map> 
      <entry key="jobName" value="reportJob" /> 
      <entry key="jobLocator" value-ref="jobRegistry" /> 
      <entry key="jobLauncher" value-ref="jobLauncher" /> 
      <entry key="cursor" value="0"/> 
       <!-- Gives error on this one: <entry key="cursor" value="#{jobParameters['cursor']}"/> 
     </map> 
    </property> 

回答

0

你可以閱讀最新的順利完成作業參數檢測最新的起跑線上,然後加入2到該值,並調用新的工作。
可以使用JobExplorer讀取作業表的元數據或直接查詢彈簧批處理的meta-data tables

+0

您是說,我必須手動讀取每作業執行2行,每次更新等builder.addDouble(「光標」中,x + 2的JobParamers ); ? – Saad

+0

是的。每一項新工作都基於上一份作業,以更新後的「光標」參數開始 –

+0

如何將作業參數發送至石英發射器,以便始終獲得遞增的參數值。我用石英getJobParametersFromJobMap()增加它,但它總是讀爲0 – Saad