使用DeployerPartitionHandler

问题描述

基于编号。使用DeployerPartitionHandler时,返回的分区数是否可以在运行时(在运行时)动态更改maxWorkers

关于, u路

更新 请找到我的用例。批处理执行在正常工作日开始,其中maxWorkers为“ 4”,分区返回为40,但突然负载增加,并且该批处理的特定运行返回了正常分区的四倍(160)。在这里,我如何增加maxWorkers(比如16)。另外,如果我始终以很高的maxWorkers上限(例如16)开始批处理,我相信正常负载的worker也可以达到16,因为每个分区都是由worker处理的,对吗?

解决方法

他们不能。围绕maxWorkers的想法实际上是在设定高水位标记,以防止该应用程序通过。实际上,工作人员数量的动态方面将来自分区的数量。如果您在问题中提供有关特定用例的更多详细信息,我们可以看看是否仍然有意义。

根据用例进行更新:

在您的特定用例中,您将需要一个侦听器(可能是JobExecutionListener),该侦听器将确定最大值应为多少。您所描述的是您需要“常规最大”和“最大负载最大”。侦听器将在相关步骤之前运行,并在ExecutionContext中设置最大值。然后,如果DeployerPartitionHandler是步骤作用域的对象,则可以在执行该步骤时将ExecutionContext的值注入处理程序中。