java threading_java – Spring Batch Multi Threading – 如何让每个线程读取唯一记录?

许多论坛已经多次询问过这个问题.但我没有看到适合我的答案.我试图在我的春季批处理实现中实现多线程步骤.

>有一个包含100k记录的临时表

>希望在每个线程的10个提交间隔300个线程中处理它 – 所以在任何时间点都有3000个记录.

>我定义了一个任务执行器,并在我想要多线程的步骤中引用它

>我的想法是,首先我将获得线程池大小(10)并用一个velue(可以是1-10)更新thread_id列到每个100k记录.在这种情况下有10个线程和100k记录,所以10k记录将分配一个id – 我正在尝试实现一个stagingsteplistener来执行此操作.

>为这个临时表写了一个读者.任务执行器将创建10个读者,每个读者必须读取300个不同的记录并处理它们 – 现在我如何传递一个公共ID

步骤监听器和读取器之间的关系,以便每个线程都有

它自己的一组记录要处理.

截至目前,我只有一个JVM.所以我想在Multi Threaded步骤中做这个,而不是考虑基于分区的方法.

请帮忙……

我提到了pro spring批处理书并创建了一个临时步骤监听器,它使用作业参数从作业配置xml接受运行ID,如下所示

class="com.apress.springbatch.statement.listener.StagingStepListener" scope="step">

value="where jobId is null and processed is null"/>

我找不到的是这个?这个“run.id”来自哪里.我在书中的任何地方都没有看到.我在我的spring批处理中复制了相同的实现,当我运行它时,我看到异常说run.id是不可识别的.请帮我讲一下如何做到这一点?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值