当前位置: 首页 > 知识库问答 >
问题:

在spring batch中将当前时间戳作为作业参数传递

田化
2023-03-14

我正在使用spring batch,但由于作业实例已经存在错误,我需要在我的作业参数中添加当前时间。我无法确定在哪里添加作业参数。下面是我的代码

<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>

当我尝试为相同的kid多次运行作业时,我会得到,作业已经存在错误,所以我需要将当前时间戳添加到我的作业参数中。在bean中添加当前时间戳作为属性MyPreparedStatmentSetter就足够了,还是需要在其他地方添加jobparameter?spring文件中jobparameters到底是从哪里挑选的?

这是我的jobLauncher bean

<bean Id= "jobLauncher "class="org.springframework.batch.core.launch.support.SimpleJobLauncher">
 <property name="jobRepository" value="myJobRepo">
</bean>

共有1个答案

邹斌
2023-03-14

手工添加一个“随机”作业参数,虽然它可以工作,但不是解决作业实例已经存在错误的最理想方法。相反,您应该考虑在作业中添加JobParametersIncrementer。Spring提供runidincrementer作为开箱即用的实现。用它配置的作业如下所示:

@Bean
public Job myJob() { 
    return jobBuilderFactory.get("myJob")
                            .incrementer(runIdIncrementer())
                            .start(step1())
                            .build();
}

@Bean
public JobParametersIncrementer runIdIncrementer() {
    return new RunIdIncrementer();
}
 类似资料:
  • 本文向大家介绍在MySQL中设置当前日期和时间作为时间戳,包括了在MySQL中设置当前日期和时间作为时间戳的使用技巧和注意事项,需要的朋友参考一下 让我们首先创建一个表。列之一设置为TIMESTAMP- 使用insert命令在表中插入一些记录。在这里,我们使用方法-将当前日期和时间设置为时间戳列- 使用select语句显示表中的所有记录- 这将产生以下输出-

  • 问题内容: 我想用当前时间戳命名由Java应用程序创建的新文件。 我需要这方面的帮助。如何命名使用当前时间戳创建的新文件?我应该包括哪些课程? 问题答案: 无需太复杂,请尝试以下一种衬垫:

  • 用例:步骤1:ItemReader:从数据库中读取1000个ItemProcessor块中的数据:处理这些数据。ItemWriter:将数据写入地图,以便下一步使用 步骤2:ItemReader:读取地图ItemProcessor:处理地图数据并获取新对象。ItemWriter:将新的进程对象持久化到数据库中。 现在我希望Map在整个作业中保持不变,目前我已经为Map创建了一个不同的POJO类,并

  • 我的服务是开始Spring批工作。我希望能够传递一些对象给作业,每次这个对象参数都会不同。这个对象我需要在我的任务中使用。我开始工作的JobLauncher。据我谷歌,我看到JobParameters不会帮助我在这种情况下。此外,我发现很多答案是使用JobExecttionContext或任何东西。但是我想在作业开始前注入参数对象。它是可拥有的吗? 开始工作的服务 我的小任务

  • 问题内容: 我是cron工作的新手,不确定是否会奏效。 为了安全起见,我考虑过制作一个一页脚本,该脚本查找某些GET值(用户名,密码和安全代码),以确保只有计算机和知道这3种信息的人才能运行该命令。 我制作了脚本,并且可以在浏览器中运行该脚本,但是可以使用GET值运行cron作业吗? 一个例子就是我跑步 这可能吗? 问题答案: 仅当通过Web服务器调用脚本时,&关联数组才被初始化。通过命令行调用时

  • 问题内容: 我在显示日期时遇到问题,我将时间戳设置为1379487711,但据此实际时间为2013年9月18日下午12:31:51,但显示的时间为17-41-1970。如何显示为当前时间。 为了显示时间,我使用了以下方法: 问题答案: 请注意,我将时间放在setTimeInMillis中的时间长而不是int,请注意我的日期格式是MM而不是mm( mm是分钟数 ,而不是月数,这就是为什么您将月份值设