我想将一个序列化的 Actor 及其状态传递给另一个 Actor(以便它可以通过网络迁移)。是否有任何 API 可以实现这一点,还是应该从头开始实现?
最佳答案
我相信 Akka 中的 Remoting 支持这种类型的功能。查看此链接,特别是有关编程远程部署的部分,看看这是否是您正在寻找的内容:
http://doc.akka.io/docs/akka/2.1.2/java/remoting.html
此外,ActorRefs
是可序列化的,因此您当然可以将 ActorRef
传递给远程节点上的另一个 Actor,然后将消息发送回您提供的引用,从而产生在返回起始节点的消息中。
还有一件事需要考虑。您实际上无法将 Actor
实例传递给另一个 Actor,您实际上可以传递的只是 ActorRef
,它是一个用于回调 Actor< 的轻量级句柄
ref 代表的实例。如果您确实想要将参与者实例及其状态迁移到另一个节点,请阅读更多内容以了解编程远程部署功能。如果您只想在单独节点中运行的两个 Actor 实例之间来回通信,则可以使用 ask (?)
来获取请求/响应行为(使用 sender
var在接收 Actor 中发送回调用 Actor,或者通过 tell (!)
传递发送 ActorRef
(通过 context.self
)然后在接收 Actor 中使用该引用来发回消息。
关于scala - akka 支持高阶 actor 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16261372/