gpt4 book ai didi

java - Spring Batch 中的分区步骤顺序

转载 作者:行者123 更新时间:2023-12-02 03:07:58 24 4
gpt4 key购买 nike

我已经实现了 Spring 批处理 partitioning我正在返回 Map<String, ExecutionContext> result = new HashMap<>();来自Partitioner的partition()方法。

我的要求是按特定顺序启动从属步骤(插入顺序到 result map ),而上面的 Map 则不会发生这种情况。 .

我尝试使用Map<String, ExecutionContext> result = new LinkedHashMap<>();这也没有用 - map 中的任何线程都会随机启动。

我正在使用SimpleAsyncTaskExecutor作为主步骤配置中的执行者和 concurrencyLimit并行线程开始。如果我设置concurrencyLimit=1 ,然后我想将第一个线程插入 result map 开始等等。

如何实现此排序?

最佳答案

从代码来看,除了上述步骤外,您可能还需要重写 StepExecutionSplitter#split,我相信您可以扩展 SimpleStepExecutionSplitter 类并实现 Split 方法,在 split 方法中,您需要将用于收集 StepExecution 的集合从 HashSet 更改为 LinkedHashSet,如果您还想考虑重新启动,那么您可能还需要考虑更改 getContexts 方法。

下面是添加分割器的代码片段。

stepBuilders.get("partitionStep")
.partitioner(slaveStep)
.partitioner("myParitionerStep", partitioner)
.taskExecutor(new SimpleThreadPoolTaskExecutor())
.splitter(new SimpleStepExecutionSplitter(jobRepository, allowStartIfComplete, stepName, partitioner))
.build()

关于java - Spring Batch 中的分区步骤顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41479240/

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