How to stop gracefully the actor system for an akka-http server that must be deployed.

前端 未结 3 1274
轻奢々
轻奢々 2020-12-19 08:03

I just created my first rest server with akka-http. The problem is that I do not know how to deploy the server in such a way that I could gracefully shutdown the actor syste

3条回答
  •  轮回少年
    2020-12-19 08:44

    One solution is to add an Actor to your ActorSystem that listens for a particular signal and calls shutdown:

    import akka.actor.{Actor, Props}
    
    object ShutdownMessage
    
    object KillSwitchActor {
      def props : Props = Props[KillSwitchActor]
    }
    
    class KillSwitchActor extends Actor {
      def receive = {
        case ShutdownMessage => context.system.shutdown()
        case _ => {}
      }
    }//end class KillSwitchActor
    

    Then you simply setup your KillSwitchActor:

    import akka.actor.ActorSystem
    
    val actorSystem : ActorSystem = ActorSystem("testKillSwitch")
    
    val killRef = actorSystem actorOf KillSwitchActor.props
    
    //"Say hello to my little friend!" - Tony Montana 
    if(someTerminatingCondition) { killRef ! ShutdownMessage }
    

提交回复
热议问题