在 AKKA 中从本地到远程 actor 消息传递
Going from local to remote actor messaging in AKKA
我遵循了推荐的配置:
akka {
actor {
provider = "akka.remote.RemoteActorRefProvider"
}
remote {
enabled-transports = ["akka.remote.netty.tcp"]
netty.tcp {
hostname = "127.0.0.1"
port = 0
}
}
}
我正在像这样创建我的演员系统:
implicit val system = ActorSystem("system239", ConfigFactory.load("application")).asInstanceOf[ExtendedActorSystem]
问题是我的 ActorRef 的路径仍然是 'short',即描述本地路径。我错过了什么?
Remoting 并不意味着您会自动让 actor 分布在节点上,因此创建本地 actor 仍然是本地 actor,ActorRef
到它仍然是本地 actor ref。它为您提供的是显式地跨节点部署和交互参与者的能力。
我建议您阅读文档 http://doc.akka.io/docs/akka/2.3.14/scala/remoting.html and maybe take a look at the remoting activator template https://www.typesafe.com/activator/template/akka-sample-remote-scala 以了解 Akka Remoting 的工作原理。
查看分布式系统的集群可能也很有趣,因为它包含更多用于常见用例的工具(跨系统的单例、id 分片、最终一致的数据等),并且在它时更健壮失败了。
另外:Akka 2.3 已经停产,所以开始任何新的东西可能不是一个好主意,改用 2.4(或者至少使用 2.3 的最新版本,即 2.3.14)
我遵循了推荐的配置:
akka {
actor {
provider = "akka.remote.RemoteActorRefProvider"
}
remote {
enabled-transports = ["akka.remote.netty.tcp"]
netty.tcp {
hostname = "127.0.0.1"
port = 0
}
}
}
我正在像这样创建我的演员系统:
implicit val system = ActorSystem("system239", ConfigFactory.load("application")).asInstanceOf[ExtendedActorSystem]
问题是我的 ActorRef 的路径仍然是 'short',即描述本地路径。我错过了什么?
Remoting 并不意味着您会自动让 actor 分布在节点上,因此创建本地 actor 仍然是本地 actor,ActorRef
到它仍然是本地 actor ref。它为您提供的是显式地跨节点部署和交互参与者的能力。
我建议您阅读文档 http://doc.akka.io/docs/akka/2.3.14/scala/remoting.html and maybe take a look at the remoting activator template https://www.typesafe.com/activator/template/akka-sample-remote-scala 以了解 Akka Remoting 的工作原理。
查看分布式系统的集群可能也很有趣,因为它包含更多用于常见用例的工具(跨系统的单例、id 分片、最终一致的数据等),并且在它时更健壮失败了。
另外:Akka 2.3 已经停产,所以开始任何新的东西可能不是一个好主意,改用 2.4(或者至少使用 2.3 的最新版本,即 2.3.14)