我正在考虑使用一系列Akka worker来为基于DeferredResult的Spring MVC Web应用程序内的工作流建模。本质上,控制器将返回 DeferredResult ,链中的actor将填充 CompletableFuture ,它在完成时为DeferredResult提供信息。
我无法弄清楚的是:
*如果此设置承担过多负载,Akka是否会施加背压
*如果是这样,我怎么能发现这种情况发生了?
答案 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。