Akka-Http: что может быть доступно между клиентом и сервером?

Чтобы запустить сервер с Akka-Http, примерно так:

implicit val system = ActorSystem()
implicit val materializer = ActorMaterializer()
Http().bindAndHandle(routes, webHost, webPort)

И использовать клиент уровня запроса:

implicit val system = ActorSystem()
implicit val materializer = ActorMaterializer()
val responseFuture: Future[HttpResponse] =
  Http().singleRequest(HttpRequest(uri = "http://akka.io"))

Какие из трех общих ресурсов, а именно ActorSystem, ActorMaterializer и HttpExt, могут безопасно использоваться как сервером, так и клиентом в одном приложении?


person vptheron    schedule 08.02.2017    source источник


Ответы (2)


Все они могут быть безопасно переданы и предназначены для использования таким образом. Единственное предостережение заключается в том, что если вам нужны разные характеристики потоков для вашего клиента и сервера, для этого потребуются разные системы акторов.

person Jon Anderson    schedule 08.02.2017
comment
Согласен, в большинстве приложений вы можете (и должны) рассматривать ActorSystem как синглтон. HttpExt напрямую связан с ActorSystem, отдельно отслеживать его не требуется. Обычно для большинства приложений достаточно одного Materializer (но вы можете создать дополнительные, если требуется разделение или несколько конфигураций). - person jrudolph; 09.02.2017

В приведенном выше примере uri-адрес akka.io является адресом клиента или адресом сервера.

person abhi    schedule 16.02.2017