我有一个复杂的长期运行流程,我将基于Spring Batch Flow Job实现。
我的REST API将等待传入的请求,然后(根据每个请求)启动新的作业执行。
现在我担心服务器资源,因为传入请求的数量非常大,我想控制同时运行的作业数量。有没有办法告诉Spring Batch同时运行不超过确切的作业数量(让他们说5)并将其余的作业放入队列以便稍后执行,例如其中一个之前的5个工作将完成?
答案 0 :(得分:1)
在Spring Batch中无法实现此目的。原因是并发作业的数量实际上是一个编排问题,Spring Batch专门避免解决(允许您与任何你想要的集成)。
话虽这么说,控制你所描述的内容的能力可以通过实施一个存储运行作业请求的工作队列,并让服务在那里获取这些请求,在一个相对直接的庄园中完成。另一端。使用Spring Integration组件可以轻松控制并发性,以防止系统过载(假设您有一种机制来处理有问题的队列大小)。