如何在所需的各个地方使用顶级ActorSystem?

day*_*mer 0 scala akka akka-http

我正在努力学习akka-http和研究他们的榜样

这是我的代码的样子

  val system = ActorSystem.create("enterpriseSystem", ConfigFactory.load("application"))
  val notifier = system.actorOf(Props[Notifier], "notifier")
Run Code Online (Sandbox Code Playgroud)

和通知者

class Notifier extends Actor with ActorLogging {

  implicit val system = ActorSystem()
  implicit val materializer = ActorMaterializer()
  import scala.concurrent.ExecutionContext.Implicits.global

  def receive = {
    case CommunicateECFailure =>
      log.info("notifying about EC Failure")
      val responseFuture: Future[HttpResponse] =
        Http().singleRequest(HttpRequest(uri = "http://localhost:8080"))

      responseFuture onComplete {
        case response =>
          log.info("response received {}", response)
          log.info("notified about EC Failure")
      }
  }
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我ActorSystem为每一个Actor创作创造了新的东西,那是不是很糟糕 我在akka文档中读到你不应该有很多ActorSystems

我怎么能避免这种情况?在施工期间将其作为参数传递?

ka4*_*eli 5

ActorSystem每次创造新的都是错的!ActorSystem每个演员都有context:

context.system
Run Code Online (Sandbox Code Playgroud)