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

在每个spring批处理作业运行中传递相同的参数

阎功
2023-03-14

java-dspring.batch.job.names=“some jobname”-jar somejar.jar

BATCH_JOB_Execution_PARAMS表中,默认情况下传递run.idtime作业参数。当我使用REST endpoint launcher方法触发作业时,我没有看到这些参数在默认情况下被传递。

并且在每个作业运行中传递这两个参数的相同值。run.id=1time=1612515999654。正如所料,它给出了以下JobInstanceAlReadyComplete异常。

    @Bean
    public Job job() throws Exception {
        return this.jobBuilderFactory.get("SOME JOBNAME")
                .incrementer(new RunIdIncrementer())
                .start(someStep())
                .build();
    }
    @Override
    protected JobRepository createJobRepository() throws Exception {
    JobRepositoryFactoryBean factory = new JobRepositoryFactoryBean();
    factory.setDataSource(dataSource);
    factory.setTransactionManager(transactionManager);
    factory.setTablePrefix("someSchema" + ".BATCH_");
    factory.afterPropertiesSet();
    return factory.getObject();
    }

我的问题是:

  1. 当我使用命令行触发作业时,为什么默认情况下传递此timerun.id作业参数?
  2. ,为什么每次运行作业时传递的两个参数的值都是一样的?即使我正在使用新的RunIdIncrementer()
  3. createjobrespository()方法是如何创建差异的?

共有1个答案

阮俊弼
2023-03-14

为什么当我使用命令行触发作业时,默认情况下会传递this time和run.id作业参数?

根据作业定义,只应将run.id参数添加到runidincrementer中的作业参数。从您分享的内容中,我看不出这个time参数来自哪里。

为什么每次运行作业时传递的两个参数的值都是一样的?即使我正在使用新的RunIdIncrementer()

 类似资料:
  • 使用spring batch/spring boot,是否可以在每个线程中使用不同的多次启动具有读取器、处理器和写入器的spring batch作业? 我的用例: 我有许多不同的文件夹,我需要观看。如果新文件进入一个文件夹,我需要调用该作业,并在作业处理期间锁定该文件夹。 这可能发生在不同数量的文件夹中,这就是为什么我需要一个spring批处理作业的多个实例,但每次使用不同的。 每个文件夹一个作业

  • 如果我有两个作业,每个作业都写入不同的数据源,那么在它使用的数据源中写入Spring批处理元数据(jobExecution、结果、...)是有意义的。然而,Spring批处理似乎指示您有一个“主要”数据源用于该元数据。 我定义了两个数据源,都没有标记为主数据源,应用程序无法启动: 我尝试创建两个配置,每个配置都扩展DefaultBatchConfigrer: 另一个完全相同,只是工作和数据源不同。

  • 我们正在实施Spring批量作业, 我们需要将作业参数从Client/MASTER传递给SLAVE。CLIENT/MASTER是我们的作业和分区代码所在的位置。我们使用传递JOB参数的J Unit调用JOB。 SLAVE是定义所有步骤及其实现(读取器Writer和处理器)的地方。 我们能够以独立的方式实现这一点,但不能与客户一起实现 我们正在使用Weblogic和Spring集成以及JMS来实现同

  • 我配置了一个spring批处理作业,它在spring WebService中运行。这项工作有几个步骤。我已经在不同的tomcats中部署了这个webservice的两个实例(但两个实例都使用相同的mysql数据库)。 我希望用不同的参数在两个tomcats中同时运行spring批处理作业(每个tomcats中一个)。我没有使用分区,每个作业的参数是完全不同的。 我开始工作在一个汤姆猫和一切看起来很

  • 我正在使用Spring batch进行批处理,在进行批处理之前,我想验证所有作业参数,如productName、productID、开始日期、结束日期、productType,如果这些作业参数为null或包含错误值,我必须使验证步骤失败,并使作业失败。 我已经编写了验证步骤和Tasklet,在我的Tasklet中,我计划处理作业参数验证(对所有作业参数执行空检查)。因为我是第一次做Spring批处

  • 我正在使用spring批处理读取CSV文件并使用controller触发器将其写入DB。在启动应用程序时,在我从浏览器url中点击之前,我会在启动时看到来自阅读器的打印语句。虽然它不为我的处理器或写入器打印它,它们是在单独的类中,我已经自动连线。是因为读者是豆子吗?