Обратное давление в приложении актеров 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 недавно опубликовала сообщение в блоге об этом соединителе.

Другие вопросы по тегам