如何在spring批处理中运行并发作业而不重复读取数据
我有超过一百万的顾客。每个客户的信息都会经常更新,但每天只更新一次。我有一份春季批量工作如何在spring批处理中运行并发作业而不重复读取数据,spring,spring-batch,Spring,Spring Batch,我有超过一百万的顾客。每个客户的信息都会经常更新,但每天只更新一次。我有一份春季批量工作 从客户表(JdbcCursorItemReader)中读取客户 处理客户信息(ItemProcessor) 写入客户表(ItemWriter) 我想一次运行10个作业,这些作业将从一个客户表中读取数据,而不会读取一个客户两次。这在SpringBatch中是可能的,还是我必须在数据库级别使用本文中提到的爬行日志表来处理 我知道参数可以传递给作业。我可以读取所有客户ID,并将客户ID平均分配给10个作业。
- 从客户表(JdbcCursorItemReader)中读取客户
- 处理客户信息(ItemProcessor)
- 写入客户表(ItemWriter)
我知道参数可以传递给作业。我可以读取所有客户ID,并将客户ID平均分配给10个作业。但这是正确的做法吗 框架有几种方法来指定您想要什么,这取决于您得到了什么。更简单的方法是将任务执行器添加到步骤或流程中:
<step id="copy">
<tasklet task-executor="taskExecutor" throttle-limit="10">
...
</tasklet>
</step>
<beans:bean id="taskExecutor"
class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
<property name="corePoolSize" value="10"/>
<property name="maxPoolSize" value="15"/>
</beans:bean>
...
您可能希望在关于可伸缩性的官方文档中了解这项技术和其他技术