Java 在spring批处理中将当前时间戳作为作业参数传递
我正在使用spring批处理,但由于作业实例已存在错误,我需要在作业参数中添加当前时间。我无法确定在何处添加作业参数。这是我的密码:Java 在spring批处理中将当前时间戳作为作业参数传递,java,spring,spring-batch,spring-batch-admin,Java,Spring,Spring Batch,Spring Batch Admin,我正在使用spring批处理,但由于作业实例已存在错误,我需要在作业参数中添加当前时间。我无法确定在何处添加作业参数。这是我的密码: <step id="myStep"> <tasklet> <chunk reader="myReader" processor="myProcessor" writer="myWriter" commit-interval="6000" skip-limit="9000"> //some more code. <
<step id="myStep">
<tasklet>
<chunk reader="myReader" processor="myProcessor" writer="myWriter" commit-interval="6000" skip-limit="9000">
//some more code.
</chunk>
</tasklet>
</step>
<bean id="myReader" class="org.springframework,batch.item.database.StoredProcedueItemReader" scope="step">
//define property for datasource , procedurename , rowmapper, parameters
<property name="preparedStatementSetter" ref="myPreparedStatmentSetter">
</bean>
<bean id="myPreparedStatmentSetter" class="com.mypackage.MyPreparedStatementSetter" scope="step">
<property name="kId" value="#{jobParameters[kId]}">
</bean>
我猜你已经在工作参数中加入了孩子。将以下内容添加到您的
joblaucher.run()
方法中
new JobParametersBuilder()
.addLong("time",System.currentTimeMillis())
.addLong("KId",<your KID>)
.toJobParameters();
newjobParametersBuilder()
.addLong(“时间”,System.currentTimeMillis())
.addLong(“孩子”)
.toJobParameters();
我猜您已经在工作参数中添加了KId。将以下内容添加到您的joblaucher.run()
方法中
new JobParametersBuilder()
.addLong("time",System.currentTimeMillis())
.addLong("KId",<your KID>)
.toJobParameters();
newjobParametersBuilder()
.addLong(“时间”,System.currentTimeMillis())
.addLong(“孩子”)
.toJobParameters();
手动添加“随机”作业参数虽然可以工作,但这并不是绕过已存在错误的作业实例的最理想方法。相反,您应该考虑在工作中添加<代码> JobParametersIncrementer <代码>。Spring提供了RunIdIncrementer
,作为这个开箱即用的实现。使用它配置的作业将如下所示:
@Bean
public Job myJob() {
return jobBuilderFactory.get("myJob")
.incrementer(runIdIncrementer())
.start(step1())
.build();
}
@Bean
public JobParametersIncrementer runIdIncrementer() {
return new RunIdIncrementer();
}
手动添加一个“随机”作业参数虽然可以工作,但并不是绕过作业实例的最理想方法。相反,您应该考虑在工作中添加<代码> JobParametersIncrementer <代码>。Spring提供了RunIdIncrementer
,作为这个开箱即用的实现。使用它配置的作业将如下所示:
@Bean
public Job myJob() {
return jobBuilderFactory.get("myJob")
.incrementer(runIdIncrementer())
.start(step1())
.build();
}
@Bean
public JobParametersIncrementer runIdIncrementer() {
return new RunIdIncrementer();
}
jobParameter需要提供给joblauncher,以便告诉您如何启动作业。jobParameter与步骤或读取器配置无关。另外,建议您使用Java配置,而不是xml配置。@Sabir Khan我使用的是CommandLineJobRunnerjobParameter,需要提供给joblauncher,请详细说明如何启动作业。jobParameter与步骤或读取器配置无关。另外,建议使用Java配置而不是xml配置。@Sabir Khan我使用的是CommandLineJobRunner