Java 如何在spring批处理中共享分区

Java 如何在spring批处理中共享分区,java,spring,spring-batch,Java,Spring,Spring Batch,要求: 必须处理多个文件并将其映射到实体 收集一批N个实体 将其刷新到DB//瓶颈 目前的执行情况: MultiResourcePartitioner读取多个文件,并TaskExecutor使其多线程化 Step s1 = sbf.get("file-db") .<Person, Person>chunk(1500) .reader(reader()) .writer(jdbcWrit

要求:

  • 必须处理多个文件并将其映射到实体
  • 收集一批N个实体
  • 将其刷新到DB//瓶颈
  • 目前的执行情况:

    MultiResourcePartitioner
    读取多个文件,并
    TaskExecutor
    使其多线程化

        Step s1 = sbf.get("file-db")
                .<Person, Person>chunk(1500)
                .reader(reader())
                .writer(jdbcWriter())
                .build();
    
        Step master = sbf.get("master-step")
                .listener(stepExecutionListener())
                .partitioner("master", partitioner())
                .step(s1)
                .taskExecutor(taskExecutor())
                .build();
    
    步骤s1=sbf.get(“文件数据库”)
    .chunk(1500)
    .reader(reader())
    .writer(jdbcWriter())
    .build();
    Step master=sbf.get(“主步骤”)
    .listener(stepExecutionListener())
    .partitioner(“主”,partitioner())
    .步骤(s1)
    .taskExecutor(taskExecutor())
    .build();
    
    问题是:

    仅将每个线程中单个文件的条目持久化到数据库是低效的。在使用内置的spring批处理功能提交到DB之前,是否有可能将实体集中到某个数据接收器中?
    或者实现这一点的唯一方法是将实体推送到一个简单队列中,然后从中读取?

    我发现的“解决办法”是实现一个自定义的
    分区器
    ,类似于
    MultiResourcePartitioner
    ,并将文件名列表推送到
    ExecutionContext
    的“解决办法”我发现正在实现一个自定义的
    分区器
    ,类似于
    多资源分区器
    ,并将文件名列表推送到
    执行上下文
    help@Saurabh也许可以使用自定义分区器创建文件批,然后在Tasklet中处理这些文件。也许help@Saurabh也许可以使用自定义分区器创建文件批,然后在Tasklet中处理这些文件。