Spring DeferredResult + Akka actors应用程序中的Backpressure

时间:2017-12-19 18:05:32

标签: spring spring-mvc akka backpressure deferred-result

我正在考虑使用一系列Akka worker来为基于DeferredResult的Spring MVC Web应用程序内的工作流建模。本质上,控制器将返回 DeferredResult ,链中的actor将填充 CompletableFuture ,它在完成时为DeferredResult提供信息。

我无法弄清楚的是:
*如果此设置承担过多负载,Akka是否会施加背压 *如果是这样,我怎么能发现这种情况发生了?

1 个答案:

答案 0 :(得分:1)

考虑使用Alpakka's Spring Web connector,它允许在Spring Web应用程序中集成Akka Streams。 Akka Streams提供背压作为其遵守reactive streams规范的一部分,连接器允许将流作为HTTP端点暴露在Spring应用程序中。 Alpakka文档中的一个例子:

@RestController
public class SampleController {

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

在您的情况下,您可以将工作流建模为流。

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