def start()

in pekko-sample-sharding-scala/killrweather/src/main/scala/sample/killrweather/WeatherHttpServer.scala [17:47]


  def start(routes: Route, port: Int, system: ActorSystem[_]): Unit = {
    import org.apache.pekko.actor.typed.scaladsl.adapter._
    implicit val classicSystem: classic.ActorSystem = system.toClassic
    val shutdown = CoordinatedShutdown(classicSystem)

    import system.executionContext

    Http().bindAndHandle(routes, "localhost", port).onComplete {
      case Success(binding) =>
        val address = binding.localAddress
        system.log.info(
          "WeatherServer online at http://{}:{}/",
          address.getHostString,
          address.getPort)

        shutdown.addTask(
          CoordinatedShutdown.PhaseServiceRequestsDone,
          "http-graceful-terminate") { () =>
          binding.terminate(10.seconds).map { _ =>
            system.log.info(
              "WeatherServer http://{}:{}/ graceful shutdown completed",
              address.getHostString,
              address.getPort)
            Done
          }
        }
      case Failure(ex) =>
        system.log.error("Failed to bind HTTP endpoint, terminating system", ex)
        system.terminate()
    }
  }