春季批处理Practitioner Reader之后无法启动

时间:2020-10-18 10:01:17

标签: spring spring-batch

如果我们将文件路径划分为更大的数字,则我们的Spring Batch阅读器将无法开始使用

  • 线程池执行器30
  • 我们正在从分区中的数据库中读取5000个文件路径,并添加了执行上下文。
    for (int i=0;i<rows.size();i++) {
                            String invoiceNumber = (String) rows.get(i).get("DOC_REFNUM");
                            fileName = ((String) rows.get(i).get("BI_REFERENCE")).trim();
                            billMedium = (String) rows.get(i).get("BI_MEDIUM_SHDES");
                            context.put("fileName", fileName);
                                context.put("DOC_REFNUM", invoiceNumber);
                                context.put("billMedium", billMedium);
                                map.put("Process"+i, context);
                                context = new ExecutionContext(); 
                           }
  • 总共30个工作线程将并行启动(线程池执行器)
    @Bean
    @Qualifier("masterStep")
    public Step masterStep() throws Exception {
        return stepBuilderFactory.get("masterStep").partitioner("slaveStep", partitioner()).step(slaveStep())
                .gridSize(30).taskExecutor(taskExecutor()).listener(new InvoiceStepListener()).build();
    }

1 个答案:

答案 0 :(得分:0)

我们通过以下流程解决了该问题

  1. 当前,我们正在表中获取XML文件路径
  2. 我们不是根据较大的块进行分区,而是根据Grid / Thread池核心大小进行分区。
  3. 每个工作从站都将获取分区文件,并一个接一个地处理,并提交块,从而再次提高性能。

如果使用其他更好的选项,请添加。