假设我有以下 Actor 层次结构:
user
|____A___|---E
| |---F
| |---G
|
|____B___I
|____C___J
|____D___K
Run Code Online (Sandbox Code Playgroud)
假设 Actor E 需要拥有 Actor I、J、K 的 IActorRef,如果系统扩展并需要更多 Actor,则在构造函数中传递 Actor Ref 会变得混乱,并且不建议用户在本地使用ActorSelection 。
随着系统的扩展,是否有一种适当且动态的方式来获取 ActorRef ?
我想了很多关于我是否应该问这个问题,因为它可以解释为基于意见的问题,但我真的很纠结这个问题,因为我已经搜索了很多,目前还不清楚这个问题的最佳实践是什么因为代码可能会变得非常混乱和不可读。
所以我查阅了文档并仔细阅读了它,我发现有两种方法可以干净地获取 IActorRef。
默认方法是使用 ActorSelection 并等待回复,从该回复中您使用该Sender属性并存储 IactorRef 。您可以使用内置消息Identify,一旦发送给参与者,接收者将自动回复ActorIdentity包含 IActorRef 的消息