/integration-test/marathon-api-docker/src/main/scala/akka/cluster/bootstrap/MarathonApiDockerDemoApp.scala
https://github.com/akka/akka-management · Scala · 46 lines · 33 code · 10 blank · 3 comment · 3 complexity · c3a6573444916ee96d96ed0d01618067 MD5 · raw file
- /*
- * Copyright (C) 2017-2020 Lightbend Inc. <https://www.lightbend.com>
- */
- package akka.cluster.bootstrap
- import akka.actor.ActorSystem
- import akka.cluster.{ Cluster, MemberStatus }
- import akka.http.scaladsl.Http
- import akka.http.scaladsl.model._
- import akka.http.scaladsl.server.Directives._
- import akka.management.cluster.bootstrap.ClusterBootstrap
- import akka.management.scaladsl.AkkaManagement
- import akka.stream.ActorMaterializer
- object MarathonApiDockerDemoApp extends App {
- implicit val system = ActorSystem("my-system")
- implicit val materializer = ActorMaterializer()
- val cluster = Cluster(system)
- def isReady() = {
- val selfNow = cluster.selfMember
- selfNow.status == MemberStatus.Up
- }
- def isHealthy() = {
- isReady()
- }
- val route =
- concat(
- path("ping")(complete("pong!")),
- path("healthy")(complete(if (isHealthy()) StatusCodes.OK else StatusCodes.ServiceUnavailable)),
- path("ready")(complete(if (isReady()) StatusCodes.OK else StatusCodes.ServiceUnavailable))
- )
- AkkaManagement(system).start()
- ClusterBootstrap(system).start()
- Http().bindAndHandle(
- route,
- sys.env.get("HOST").getOrElse("127.0.0.1"),
- sys.env.get("PORT_HTTP").map(_.toInt).getOrElse(8080))
- }