parallel-processing - Spring Batch Remote Partitioning:工作分区不并行运行
问题描述
我有一个 Spring Batch 远程分区应用程序,它正在生成分区,并且分区功能正常。但是,目前分区是按顺序运行的,而不是并行运行的。我在 Spring Cloud 数据流中运行作业/任务/分区。我已将我的 master 和 worker 功能拆分为具有单独配置文件的单独类/包。我的主档案类代码(部分)是:
public class PartitionMaster {
....
// Configure Remote Job
@Bean
public Job jobRemotePartitioning() {
return this.jobBuilderFactory
.get("jobRemotePartitioning")
.incrementer(new RunIdIncrementer())
.flow(paymentRaiseMasterStep())
.end()
.build();
}
....
@Bean
public Step paymentRaiseMasterStep() {
CustomPartitioner customPartitioner = new CustomPartitioner(datasource, propertiesConfig.getTimeTravelDate(), propertiesConfig.getLeadTime());
return this.masterStepBuilderFactory
.get("paymentRaiseMasterStep")
.partitioner("paymentRaiseWorkerStep", customPartitioner)
.gridSize(propertiesConfig.getGrid())
.outputChannel(masterPaymentRaiseRequests())
.taskExecutor(taskExecutor())
.build();
}
....
@Bean
public TaskExecutor taskExecutor(){
return new SimpleAsyncTaskExecutor("paymentRaiseWorkerStep");
}
....
}
我的工人资料类代码(部分)是:
public class PartitionWorker {
....
@Bean
public Step paymentRaiseWorkerStep() {
return this.workerStepBuilderFactory
.get("paymentRaiseWorkerStep")
.inputChannel(consumePaymentRaiseMasterRequests())
.tasklet(taskletProcessing(null, null))
.build();
}
....
}
任何专家的 Spring Batch 远程分区建议将不胜感激。当我在 Spring Cloud 数据流中运行 2 个分区时:
如果我运行 2 个工作人员,则 1 个工作人员按顺序处理两个分区。另一个工作人员不处理任何分区。
我正在使用 scdf 将 master 和 worker 作为任务运行:
解决方案
推荐阅读
- qt - 使用 cmake --build 会跳过编译 rcc 文件,但可以使用 make。这可能是什么原因?
- c# - 验证服务描述符时出错
- r - 如何从 R 中的矩阵中随机选择 % 的观察值?
- python - 不能在 QTableWidget 中添加两列。错误 - DeprecationWarning:需要一个整数(获取类型浮点数)
- python - 在 Facebook 中为 selenium 中的页面选项卡编写 css 选择器
- r - RMSE 以向量或列表的形式返回 NA 或错误
- regex - 是否可以将捕获的组从 Powershell 正则表达式分配给没有 IF 块的变量?
- wso2 - 如何在 wso2 apim 日志中显示调用某些 api 的用户的个人资料信息?
- ios - React Native OneSignal 集成错误 openURL:options:completionHandler:' 不可用
- angular - 我们如何处理 Angular 中的表单组密码匹配?