【发布时间】:2015-02-28 12:02:29
【问题描述】:
我有一些 Akka 项目,我有以下场景:我有很多演员,我希望有一个人类可读的名字,但同时,我不想为每个演员生成唯一的名字我一个人。那么,有没有办法告诉道具或演员系统在自动生成的名称前加上一个特定的字符串?
例如,我有一些演员 Master,他创建了一些 Worker 类型的孩子。我希望每个孩子的名字都以“worker-”开头,这样我就可以在日志中轻松跟踪。另外,如果可能的话,我想知道是否有其他方法可以更细粒度地命名演员。
提前致谢。
编辑:这是我想要的示例
目前,据我所知,您有两种选择:
1) 使用自动生成的名称创建actor
ActorRef myActor = mySystem.actorOf(MyActor.props());
2) 使用用户指定的名称创建参与者
ActorRef myActor = mySystem.actorOf( MyActor.props(), MyNamingAPI.getSomeNewName() );
1) 不好,因为在日志中我不知道谁是谁。 2) 不好,因为我必须编写/使用我自己的 API,而且如果其他人使用我的演员项目作为子系统,他必须小心不要重复名称或使用不同的演员系统。所以,它不是便携式的。
我希望 Akka 支持类似的东西:
ActorRef myActor = mySystem.actorOf(MyActor.props(), "my-actor-%");
其中 % 符号表示自动生成的 ID。
【问题讨论】:
-
遗憾的是,API 不支持此功能。如果不自己生成名称或使用在后台生成名称的 API,您将无法做到。