将消息传递给远程actor时发生未知的UID警告

时间:2016-04-05 14:58:45

标签: scala akka actor

以下是代码:

package com.packt.akka

import akka.actor.{Actor, ActorRef, ActorSystem, Props}

import com.typesafe.config.ConfigFactory

object MembersService {
  val config = ConfigFactory.load.getConfig("MembersService")

  val system = ActorSystem("MembersService", config)

  val worker = system.actorOf(Props[Worker], "remote-worker")

  println(s"Worker actor path is ${worker.path}")

}

object MemberServiceLookup {

  val config = ConfigFactory.load.getConfig("MemberServiceLookup")

  val system = ActorSystem("MemberServiceLookup", config)

  val worker = system.actorSelection("akka.tcp://MembersService@127.0.0.1:2552/user/remote-worker")

  worker ! Worker.Work("Hi Remote Actor")
}

object MembersServiceRemoteCreation extends App {
  val config = ConfigFactory.load.getConfig("MembersServiceRemoteCreation")

  val system = ActorSystem("MembersServiceRemoteCreation", config)

  val workerActor = system.actorOf(Props[Worker], "workerActorRemote")

  println(s"The remote path of worker Actor is ${workerActor.path}")

  workerActor ! Worker.Work("Hi Remote Worker")

}


class Worker extends Actor {
  import Worker._

  def receive = {
    case msg: Work =>
      println(s"I received Work Message and My ActorRef: ${self}")
  }
}

object Worker {
  case class Work(message: String)
}

application.conf:

MembersService {
  akka {
    actor {
      provider = "akka.remote.RemoteActorRefProvider"
    }
    remote {
      enabled-transports = ["akka.remote.netty.tcp"]
      netty.tcp {
        hostname = "127.0.0.1"
        port = 2552
      }
    }
  }
}

MemberServiceLookup {
  akka {
    actor {
      provider = "akka.remote.RemoteActorRefProvider"
    }
    remote {
      enabled-transports = ["akka.remote.netty.tcp"]
      netty.tcp {
        hostname = "127.0.0.1"
        port = 2553
      }
    }
  }
}

MembersServiceRemoteCreation {
  akka {
    actor {
      provider = "akka.remote.RemoteActorRefProvider"
      deployment {
        /workerActorRemote {
          remote: "akka.tcp://MembersService@127.0.0.1:2552"
        }
      }
    }
    remote {
      enabled-transports = ["akka.remote.netty.tcp"]
      netty.tcp {
        hostname = "127.0.0.1"
        port = 2558
      }
    }
  }
}

build.sbt:

name := "Hotswap Behavior"

version := "1.0"

scalaVersion := "2.11.7"

sbtVersion := "0.13.11"

libraryDependencies ++= Seq(
  "com.typesafe.akka" %% "akka-actor" % "2.4.0",
  "com.typesafe.akka" %% "akka-remote" % "2.4.0")

运行应用程序会提供以下输出(并快速加热CPU):

/Library/Java/JavaVirtualMachines/jdk1.8.0_72.jdk/Contents/Home/bin/java -Didea.launcher.port=7533 "-Didea.launcher.bin.path=/Applications/IntelliJ IDEA CE.app/Contents/bin" -Dfile.encoding=UTF-8 -classpath "/Library/Java/JavaVirtualMachines/jdk1.8.0_72.jdk/Contents/Home/jre/lib/charsets.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_72.jdk/Contents/Home/jre/lib/deploy.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_72.jdk/Contents/Home/jre/lib/ext/cldrdata.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_72.jdk/Contents/Home/jre/lib/ext/dnsns.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_72.jdk/Contents/Home/jre/lib/ext/jaccess.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_72.jdk/Contents/Home/jre/lib/ext/jfxrt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_72.jdk/Contents/Home/jre/lib/ext/localedata.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_72.jdk/Contents/Home/jre/lib/ext/nashorn.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_72.jdk/Contents/Home/jre/lib/ext/sunec.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_72.jdk/Contents/Home/jre/lib/ext/sunjce_provider.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_72.jdk/Contents/Home/jre/lib/ext/sunpkcs11.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_72.jdk/Contents/Home/jre/lib/ext/zipfs.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_72.jdk/Contents/Home/jre/lib/javaws.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_72.jdk/Contents/Home/jre/lib/jce.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_72.jdk/Contents/Home/jre/lib/jfr.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_72.jdk/Contents/Home/jre/lib/jfxswt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_72.jdk/Contents/Home/jre/lib/jsse.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_72.jdk/Contents/Home/jre/lib/management-agent.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_72.jdk/Contents/Home/jre/lib/plugin.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_72.jdk/Contents/Home/jre/lib/resources.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_72.jdk/Contents/Home/jre/lib/rt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_72.jdk/Contents/Home/lib/ant-javafx.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_72.jdk/Contents/Home/lib/dt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_72.jdk/Contents/Home/lib/javafx-mx.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_72.jdk/Contents/Home/lib/jconsole.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_72.jdk/Contents/Home/lib/packager.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_72.jdk/Contents/Home/lib/sa-jdi.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_72.jdk/Contents/Home/lib/tools.jar:/Users/kaiyin/IdeaProjects/Learning Akka (video) code/section5/akka-remoting/target/scala-2.11/classes:/Users/kaiyin/.ivy2/cache/org.uncommons.maths/uncommons-maths/jars/uncommons-maths-1.2.2a.jar:/Users/kaiyin/.ivy2/cache/com.typesafe/config/bundles/config-1.3.0.jar:/Users/kaiyin/.ivy2/cache/com.typesafe.akka/akka-actor_2.11/jars/akka-actor_2.11-2.4.0.jar:/Users/kaiyin/.ivy2/cache/com.typesafe.akka/akka-protobuf_2.11/jars/akka-protobuf_2.11-2.4.0.jar:/Users/kaiyin/.ivy2/cache/com.typesafe.akka/akka-remote_2.11/jars/akka-remote_2.11-2.4.0.jar:/Users/kaiyin/.ivy2/cache/io.netty/netty/bundles/netty-3.10.3.Final.jar:/Users/kaiyin/.ivy2/cache/org.scala-lang/scala-library/jars/scala-library-2.11.7.jar:/Applications/IntelliJ IDEA CE.app/Contents/lib/idea_rt.jar" com.intellij.rt.execution.application.AppMain com.packt.akka.MembersServiceRemoteCreation
[INFO] [04/05/2016 16:54:43.982] [main] [akka.remote.Remoting] Starting remoting
[INFO] [04/05/2016 16:54:44.143] [main] [akka.remote.Remoting] Remoting started; listening on addresses :[akka.tcp://MembersServiceRemoteCreation@127.0.0.1:2558]
[INFO] [04/05/2016 16:54:44.144] [main] [akka.remote.Remoting] Remoting now listens on addresses: [akka.tcp://MembersServiceRemoteCreation@127.0.0.1:2558]
The remote path of worker Actor is akka.tcp://MembersService@127.0.0.1:2552/remote/akka.tcp/MembersServiceRemoteCreation@127.0.0.1:2558/user/workerActorRemote
[WARN] [04/05/2016 16:54:44.262] [MembersServiceRemoteCreation-akka.remote.default-remote-dispatcher-6] [akka.tcp://MembersServiceRemoteCreation@127.0.0.1:2558/system/endpointManager/reliableEndpointWriter-akka.tcp%3A%2F%2FMembersService%40127.0.0.1%3A2552-0] Association with remote system [akka.tcp://MembersService@127.0.0.1:2552] has failed, address is now gated for [5000] ms. Reason: [Association failed with [akka.tcp://MembersService@127.0.0.1:2552]] Caused by: [Connection refused: /127.0.0.1:2552]
[INFO] [04/05/2016 16:54:44.266] [MembersServiceRemoteCreation-akka.actor.default-dispatcher-2] [akka://MembersServiceRemoteCreation/deadLetters] Message [akka.remote.DaemonMsgCreate] from Actor[akka://MembersServiceRemoteCreation/deadLetters] to Actor[akka://MembersServiceRemoteCreation/deadLetters] was not delivered. [1] dead letters encountered. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'.
[INFO] [04/05/2016 16:54:44.266] [MembersServiceRemoteCreation-akka.actor.default-dispatcher-2] [akka://MembersServiceRemoteCreation/deadLetters] Message [com.packt.akka.Worker$Work] from Actor[akka://MembersServiceRemoteCreation/deadLetters] to Actor[akka://MembersServiceRemoteCreation/deadLetters] was not delivered. [2] dead letters encountered. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'.
[INFO] [04/05/2016 16:54:45.165] [MembersServiceRemoteCreation-akka.actor.default-dispatcher-3] [akka://MembersServiceRemoteCreation/deadLetters] Message [akka.remote.RemoteWatcher$Heartbeat$] from Actor[akka://MembersServiceRemoteCreation/system/remote-watcher#-1480050878] to Actor[akka://MembersServiceRemoteCreation/deadLetters] was not delivered. [3] dead letters encountered. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'.
[INFO] [04/05/2016 16:54:46.162] [MembersServiceRemoteCreation-akka.actor.default-dispatcher-3] [akka://MembersServiceRemoteCreation/deadLetters] Message [akka.remote.RemoteWatcher$Heartbeat$] from Actor[akka://MembersServiceRemoteCreation/system/remote-watcher#-1480050878] to Actor[akka://MembersServiceRemoteCreation/deadLetters] was not delivered. [4] dead letters encountered. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'.
[INFO] [04/05/2016 16:54:47.164] [MembersServiceRemoteCreation-akka.actor.default-dispatcher-3] [akka://MembersServiceRemoteCreation/deadLetters] Message [akka.remote.RemoteWatcher$Heartbeat$] from Actor[akka://MembersServiceRemoteCreation/system/remote-watcher#-1480050878] to Actor[akka://MembersServiceRemoteCreation/deadLetters] was not delivered. [5] dead letters encountered. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'.
[INFO] [04/05/2016 16:54:48.163] [MembersServiceRemoteCreation-akka.actor.default-dispatcher-3] [akka://MembersServiceRemoteCreation/deadLetters] Message [akka.remote.RemoteWatcher$Heartbeat$] from Actor[akka://MembersServiceRemoteCreation/system/remote-watcher#-1480050878] to Actor[akka://MembersServiceRemoteCreation/deadLetters] was not delivered. [6] dead letters encountered. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'.
[INFO] [04/05/2016 16:54:49.162] [MembersServiceRemoteCreation-akka.actor.default-dispatcher-3] [akka://MembersServiceRemoteCreation/deadLetters] Message [akka.remote.RemoteWatcher$Heartbeat$] from Actor[akka://MembersServiceRemoteCreation/system/remote-watcher#-1480050878] to Actor[akka://MembersServiceRemoteCreation/deadLetters] was not delivered. [7] dead letters encountered. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'.
[WARN] [04/05/2016 16:54:49.285] [MembersServiceRemoteCreation-akka.remote.default-remote-dispatcher-5] [akka.tcp://MembersServiceRemoteCreation@127.0.0.1:2558/system/endpointManager/reliableEndpointWriter-akka.tcp%3A%2F%2FMembersService%40127.0.0.1%3A2552-0] Association with remote system [akka.tcp://MembersService@127.0.0.1:2552] has failed, address is now gated for [5000] ms. Reason: [Association failed with [akka.tcp://MembersService@127.0.0.1:2552]] Caused by: [Connection refused: /127.0.0.1:2552]
[INFO] [04/05/2016 16:54:50.161] [MembersServiceRemoteCreation-akka.actor.default-dispatcher-2] [akka://MembersServiceRemoteCreation/deadLetters] Message [akka.remote.RemoteWatcher$Heartbeat$] from Actor[akka://MembersServiceRemoteCreation/system/remote-watcher#-1480050878] to Actor[akka://MembersServiceRemoteCreation/deadLetters] was not delivered. [8] dead letters encountered. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'.
[INFO] [04/05/2016 16:54:51.161] [MembersServiceRemoteCreation-akka.actor.default-dispatcher-3] [akka://MembersServiceRemoteCreation/deadLetters] Message [akka.remote.RemoteWatcher$Heartbeat$] from Actor[akka://MembersServiceRemoteCreation/system/remote-watcher#-1480050878] to Actor[akka://MembersServiceRemoteCreation/deadLetters] was not delivered. [9] dead letters encountered. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'.
[INFO] [04/05/2016 16:54:52.171] [MembersServiceRemoteCreation-akka.actor.default-dispatcher-2] [akka://MembersServiceRemoteCreation/deadLetters] Message [akka.remote.RemoteWatcher$Heartbeat$] from Actor[akka://MembersServiceRemoteCreation/system/remote-watcher#-1480050878] to Actor[akka://MembersServiceRemoteCreation/deadLetters] was not delivered. [10] dead letters encountered, no more dead letters will be logged. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'.
[WARN] [04/05/2016 16:54:54.304] [MembersServiceRemoteCreation-akka.remote.default-remote-dispatcher-5] [akka.tcp://MembersServiceRemoteCreation@127.0.0.1:2558/system/endpointManager/reliableEndpointWriter-akka.tcp%3A%2F%2FMembersService%40127.0.0.1%3A2552-0] Association with remote system [akka.tcp://MembersService@127.0.0.1:2552] has failed, address is now gated for [5000] ms. Reason: [Association failed with [akka.tcp://MembersService@127.0.0.1:2552]] Caused by: [Connection refused: /127.0.0.1:2552]
[WARN] [04/05/2016 16:54:59.171] [MembersServiceRemoteCreation-akka.remote.default-remote-dispatcher-6] [akka.tcp://MembersServiceRemoteCreation@127.0.0.1:2558/system/remote-watcher] Detected unreachable: [akka.tcp://MembersService@127.0.0.1:2552]
[WARN] [04/05/2016 16:54:59.171] [MembersServiceRemoteCreation-akka.remote.default-remote-dispatcher-5] [akka.remote.Remoting] Association to [akka.tcp://MembersService@127.0.0.1:2552] with unknown UID is reported as quarantined, but address cannot be quarantined without knowing the UID, gating instead for 5000 ms.

知道这里出了什么问题吗?

1 个答案:

答案 0 :(得分:0)

查看配置,端口配置错误。

原因:[拒绝连接:/127.0.0.1:2552]

确保您有一个Akka节点在该端口上侦听。