既然你用
akka
,我假设您正在使用akka http进行调用。您可以使用akka流成批发出请求,以避免连接溢出,例如:
Source(reportsVector)
.grouped(safeValue)
.mapAsync(1)(reps => Future.traverse(reps)(x => ...)) //do your stuff
.mapConcat(identity)
.runWith(Sink.seq)
示例将执行
safeValue
一次并发调用并将所有结果收集到一个集合中,该集合将在整个流完成时返回。您还可以与其他操作员一起玩,如
sliding
和
splitWhen
为了使它更适合您的用例,您可以调整
安全指数
以及
mapAsync
并发值也是。注意,这个流的源是一个已知的向量(
reportsVector
)但它也可能是一个未知的有限的报告流。