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);
}
}
对于您的情况,您可以将工作流程建模为流。
Akka 团队最近发布了关于此连接器的blog post。
我正在考虑使用一系列 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);
}
}
对于您的情况,您可以将工作流程建模为流。
Akka 团队最近发布了关于此连接器的blog post。