Обратное давление в приложении актеров Spring DeferredResult + Akka
Я имею в виду использование цепочки работников Akka для моделирования рабочего процесса в веб-приложении Spring MVC на основе DeferredResult. По сути, контроллер вернет DeferredResult, и акторы в цепочке будут работать для заполнения CompletableFuture, который подает DeferredResult после завершения.
То, что я не могу понять, это:
* Будет ли Akka оказывать противодавление, если эта установка принимает слишком большую нагрузку.
* Если так, как я могу обнаружить, что это происходит?
1 ответ
Подумайте об использовании веб-соединителя Alpakka Spring, который позволяет интегрировать потоки Akka в веб-приложение Spring. Akka Streams обеспечивает противодавление как часть своей приверженности спецификации реактивных потоков, а соединитель позволяет отображать потоки как конечные точки HTTP в приложении Spring. Пример из документации Alpakka:
@RestController
public class SampleController {
@RequestMapping("/")
public Source<String, NotUsed> index() {
return
Source.repeat("Hello world!")
.intersperse("\n")
.take(10);
}
}
В вашем случае вы можете смоделировать свой рабочий процесс как поток.
Команда Akka недавно опубликовала сообщение в блоге об этом соединителе.