2017-01-06 3 views
3

Я создаю кластер Akka и хочу использовать сервер Akka-HTTP в качестве сервера API внутри. Как это сделать?Как запустить сервер Akka-HTTP внутри кластера Akka?

Я бы предположил, что это будет кластер singleton, поскольку он является точкой доступа к кластеру, но сделать его актером кажется странным, поскольку он должен будет иметь метод receive(), который ничего не сделает (i Угадай).

+0

вы были в состоянии решить эту проблему? – twoface88

ответ

-2

Простейший пример:

implicit val system = ... // your ActorSystem goes here 
implicit val materializer = ActorMaterializer() 
implicit val executionContext = system.dispatcher 

val route = 
    path("hello") { 
    get { 
     complete(HttpEntity(ContentTypes.`text/plain(UTF-8)`, "Hello World !")) 
    } 
    } 

val bindingFuture = Http().bindAndHandle(route, "localhost", 8080) 

Для остановки:

bindingFuture 
    .flatMap(_.unbind()) // trigger unbinding from the port 
    .onComplete(_ => system.terminate()) // and shutdown when done 
+0

Я думаю, вы пропустили мой вопрос. Я ищу, чтобы запустить его как часть кластера Akka, как одноэлементный (это что-то похожее). –

+1

Запустите http на каждом узле и напишите логику конечной точки внутри актера (имеющей actorRef, ранее созданный, локально или удаленно в кластере) и доступ к одному из них (в кластере) с помощью actorSelection или clusterClient. Если вы используете routerPools, ** allow-local-routee ** может помочь распространять сообщения в кластере – gaston

+0

Вы просмотрели http://doc.akka.io/docs/akka/2.4/scala/cluster-singleton .html? –

Смежные вопросы