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

Spring批量重启

严锐
2023-03-14
@Bean
    @Qualifier("dataTransferJob")
    public Job dataJob() {

        return jobBuilderFactory.get("data-transfer-job")
                .listener(jobExecutionListener())
                .flow(step()).end().build();
    }

    @Bean
    public Step step() {
        return stepBuilderFactory.get("data-transfer-step")
                .<TestData, TestDataVO>chunk(100)
                .reader(reader())
                .processor(process())
                .writer(writer)
                .taskExecutor(threadPool)
                .transactionManager(transactionManager)
                .listener(stepExecutionListener())
                .listener(chunkListener())
                .throttleLimit(10)
                .build();
    }

    @PersistenceContext
    private EntityManager em;

    @Bean(destroyMethod="")
    public ItemReader<TestData> reader() {
        JpaPagingItemReader<TestData> itemReader = new JpaPagingItemReader<>();
        try {
            String sqlQuery = "SELECT * FROM TEST_DATA";
            JpaNativeQueryProvider<TestData> queryProvider = new JpaNativeQueryProvider<TestData>();
            queryProvider.setSqlQuery(sqlQuery);
            queryProvider.setEntityClass(TestData.class);
            queryProvider.afterPropertiesSet();

            itemReader.setEntityManagerFactory(em.getEntityManagerFactory());

            itemReader.setPageSize(100);
            itemReader.setQueryProvider(queryProvider);
            itemReader.afterPropertiesSet();
            itemReader.setSaveState(true);
        }
        catch (Exception e) {
            System.out.println("BatchConfiguration.reader() ==> error " + e.getMessage());
        }
        return itemReader;    

    }

使用CommandLineRunner处理工作

    @Autowired
    JobLauncher jobLauncher;

    @Autowired
    @Qualifier("dataTransferJob")
    Job dataJob;

    JobParametersBuilder paramsBuilder = new JobParametersBuilder();
    paramsBuilder.addString("date", LocalDateTime.now().toString());

    JobExecution jobExecution=jobLauncher.run(dataJob, paramsBuilder.toJobParameters());

共有1个答案

杜起运
2023-03-14

在Spring Batch中,作业实例由(标识)作业参数标识。请查看批处理的域语言部分,以了解作业JobInstanceJobExecution概念之间的区别,以及如何使用参数来标识作业实例。

我试图在进程中间停止批处理并重新运行。它总是执行一个新的工作。

在您的示例中,由于您在每次运行时都将当前时间添加为作业参数,因此:

JobParametersBuilder paramsBuilder = new JobParametersBuilder();
paramsBuilder.addString("date", LocalDateTime.now().toString());
 类似资料:
  • 我知道spring-batch-admin是不推荐的。但是,我们现在不能使用spring-cloud-data-flow。是否有其他替代方案来监控和按需重启作业?

  • 清除Spring表的最佳方法是什么? Spring是否提供任何用于清除的API?或者,我们是否需要对所有Spring批处理表执行delete语句?

  • 我希望将Spring Batch与RabbitMQ集成。我已经开发了如下代码,但是没有数据通过通道。代码中有什么问题? hannel.java 顾客JAVA CustomerFieldSetMapper。JAVA JobConfig。JAVA 应用属性 顾客csv SpringBatchAmqpApplication.java

  • 问题内容: 我想批量重命名目录中的多个文件,以便从文件名中删除前面的数字和连字符。 如何使用linux命令执行此操作? 问题答案: 这应该使它: 它从块的开头(即数字)开始多次,然后连字符并将其从文件名中删除。 如果不在您的计算机中,则可以使用循环和: 测试 要么:

  • 我们在Spring批处理块分区架构的基础上编写了一个批处理基础框架。(主从并行处理模型)[1]

  • 我怎样才能停止一个工作在Spring批次?我尝试使用下面的代码来使用这个方法: 我尝试也完成了,失败了,但这个方法不工作,作业继续执行。有解决办法吗?