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
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中处理这些文件。