首页 > 解决方案 > 使用 DeployerPartitionHandler 动态更改 maxWorkers

问题描述

基于没有。使用 DeployerPartitionHandler 时,返回的分区的 maxWorkers 可以动态更改(在运行时)

问候, 巴鲁

更新 请找到我的用例。批处理从正常工作日开始,maxWorkers 为“4”,分区返回为 40,但负载突然增加,批处理的特定运行返回正常分区 (160) 的 4 倍。在这里我如何增加 maxWorkers(比如 16)。此外,如果我总是以 maxWorkers 的非常高的限制(比如 16)开始批处理,我相信正常负载的工人也可以达到 16,因为每个分区都由工人处理,对吗?

标签: spring-cloud-task

解决方案


他们不能。周围的想法maxWorkers实际上是设置应用程序不应超过的高水位线。工人数量的动态方面确实预计来自分区的数量。如果您在问题中提供有关特定用例的更多详细信息,我们可以看看这是否仍然有意义。

根据用例更新:

在您的特定用例中,您需要有一个侦听器(可能是 a JobExecutionListener)来确定最大值应该是多少。你所描述的是你想要一个“常规最大值”和一个“高负载最大值”。侦听器将在相关步骤之前运行并在ExecutionContext. 然后,如果是步骤范围的,您可以在该步骤执行时DeployerPartitionHandler将值从注入到处理程序中。ExecutionContext


推荐阅读