Spring DeferredResult + Akka actors 应用程序中的背压

Backpressure in a Spring DeferredResult + Akka actors application

我正在考虑使用一系列 Akka worker 在基于 Spring MVC web 应用程序的 DeferredResult 中对工作流进行建模。本质上,控制器将 return 一个 DeferredResult 并且链中的参与者将工作以填充一个 CompletableFuture,它在完成时提供 DeferredResult。

我想不通的是:
* 如果此设置负载过大,Akka 是否会施加背压。
* 如果是这样,我如何检测到这种情况正在发生?

考虑使用 Alpakka's Spring Web connector, which allows integration of Akka Streams in a Spring Web application. Akka Streams provides backpressure as part of its adherence to the reactive streams 规范,连接器允许在 Spring 应用程序中将流公开为 HTTP 端点。 Alpakka 文档中的示例:

@RestController
public class SampleController {

  @RequestMapping("/")
  public Source<String, NotUsed> index() {
    return
      Source.repeat("Hello world!")
        .intersperse("\n")
        .take(10);
  }
}

对于您的情况,您可以将工作流程建模为流。

A​​kka 团队最近发布了关于此连接器的blog post