gpt4 book ai didi

spring - 如何在不读取重叠数据的情况下在 spring batch 中运行并发作业

转载 作者:行者123 更新时间:2023-12-04 14:36:34 25 4
gpt4 key购买 nike

我有一张超过 100 万客户的表格。每个客户的信息都会经常更新,但每天只会更新一次。我有一个 Spring 批处理作业

  • 从客户表 (JdbcCursorItemReader) 读取客户
  • 处理客户信息 (ItemProcessor)
  • 写入客户表(ItemWriter)

我想一次运行 10 个作业,这些作业将从一个客户表中读取,而无需读取一个客户两次。这对 Spring 批处理有可能吗?或者这是我必须使用本文中提到的 crawlLog 表在数据库级别处理的东西吗?

How do I lock read/write to MySQL tables so that I can select and then insert without other programs reading/writing to the database?

我知道可以将参数传递给作业。我可以读取所有客户 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>

您可能想看看官方 Spring Batch documentation 中的这个和其他技术关于可扩展性。

关于spring - 如何在不读取重叠数据的情况下在 spring batch 中运行并发作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16820304/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com