我有一个使用 Akka Server HTTP 处理传入请求的服务(我们称之为服务 A)。我也有提供多种网络服务的第 3 方应用程序(服务 B)。服务 A 的目的是转换客户端请求,调用服务 B 的一个或多个 Web 服务,合并/转换结果并将其返回给客户端。
我将 Actors 用于某些部分,而将 Future 用于其他部分。为了调用服务 B,我使用 Akka HTTP 客户端。
Http.get(actorSystem).singleRequest(HttpRequest.create()
.withUri("http://127.0.0.1:8082/test"), materializer)
.onComplete(...)
问题是,每个 Service A 请求都会创建一个新流,如果有多个并发连接,则会导致akka.stream.OverflowStrategy$Fail$BufferOverflowException: Exceeded configured max-open-requests value of [32] error
我已经问过这个问题并得到了使用单个 Flow如何正确调用 Akka HTTP 客户端来处理多个(10k - 100k)请求的建议?
虽然它适用于来自一个地方的一批请求,但我不知道如何使用来自所有并发请求处理程序的单个 Flow。
正确的“阿卡方式”是什么?