Akka HTTP-клиент + балансировщик нагрузки

Как правильно запустить балансировщик нагрузки с помощью akka http? В настоящее время я использую следующий фрагмент кода:

val poolClientFlow = Http().cachedHostConnectionPool[String](host, port)

source
  .map(url => HttpRequest(uri = url) -> url)
  .via(poolClientFlow)
  .to(Sink.actorRef(myActor, IsDone))
  .run()

Поскольку я открываю соединение раньше, балансировщик нагрузки понимает, что я хочу отправить на тот же компьютер, поэтому циклический перебор не работает должным образом. Должен ли я переместить poolClientFlow в .via, открывая и закрывая его каждый раз?


person Thiago Pereira    schedule 29.04.2016    source источник


Ответы (1)


Я написал один несколько недель назад в качестве эксперимента:

https://github.com/agemooij/stream-experiments/blob/master/src/main/scala/scalapenos/experiments/streams/LoadBalancingHttpClient.scala

Он использует граф DSL для балансировки запроса по ряду отдельных пулов соединений.

person Age Mooij    schedule 30.04.2016