Akka Persistence Actor选择路径?
Akka Persistence ActorSelection path?
我正在尝试理解和使用 akka 持久性。我是这个 EventSourcing 世界的新手。
我正在尝试获取 ActorRef 来列出一些项目,但我收到此 "actor name is not unique" 错误;所以我正在尝试使用这个 actorSelection 方法。
问题是它要求路径。那是哪条路?如果我使用 PlayFramework 的 Akka.system()?
,我如何确保我使用的路径正确
当前代码:
def index = Action {
val queryActor = Akka.system.actorOf(IssuesView.props, IssuesView.actorName)
val inbox = Inbox.create(Akka.system)
inbox.send(queryActor, IssuesView.GetAll)
val issueSet = inbox.receive(1 seconds).asInstanceOf[IssueSet]
Ok(views.html.index(issueSet.issues.toSeq))
}
每个 Actor 在 ActorSystem 中都有一个地址。
ActorPath 是 Actor 层次结构的表示。
顶部是监护人角色,例如所有名为 "user" 的用户角色的监护人角色。它的路径类似于 akka://<system>/user
.
使用 actorSystem.actorOf
创建的 actor 将用户监护人作为主管:akka://<system>/user/
。如果提供了参与者名称,则该名称将用作节点名称。
system.acorOf(props, "Foo")
-> akka://<system>/user/Foo
同一层次结构级别上的所有参与者必须具有唯一名称。
因此,如果你得到一个错误
actor name is not unique
那么你已经有一个同名演员 运行 在你想要开始新的同一级别。
由另一个具有 context.actorOf(props, "Bar")
的 Actor(例如由 Foo)启动的 Actor 比启动它们的 Actor 低一级启动:akka://<system>/Foo/Bar
.
当使用 ActorSelection 时,您传递一个锚点引用和一个相对 ActorPath
。
例如如果您在 Foo
并想向 Foo
的所有子演员发送消息,您可以使用通配符来 多播 消息:
ActorSelection(self, "./*") ! message
我正在尝试理解和使用 akka 持久性。我是这个 EventSourcing 世界的新手。
我正在尝试获取 ActorRef 来列出一些项目,但我收到此 "actor name is not unique" 错误;所以我正在尝试使用这个 actorSelection 方法。
问题是它要求路径。那是哪条路?如果我使用 PlayFramework 的 Akka.system()?
,我如何确保我使用的路径正确当前代码:
def index = Action {
val queryActor = Akka.system.actorOf(IssuesView.props, IssuesView.actorName)
val inbox = Inbox.create(Akka.system)
inbox.send(queryActor, IssuesView.GetAll)
val issueSet = inbox.receive(1 seconds).asInstanceOf[IssueSet]
Ok(views.html.index(issueSet.issues.toSeq))
}
每个 Actor 在 ActorSystem 中都有一个地址。
ActorPath 是 Actor 层次结构的表示。
顶部是监护人角色,例如所有名为 "user" 的用户角色的监护人角色。它的路径类似于 akka://<system>/user
.
使用 actorSystem.actorOf
创建的 actor 将用户监护人作为主管:akka://<system>/user/
。如果提供了参与者名称,则该名称将用作节点名称。
system.acorOf(props, "Foo")
-> akka://<system>/user/Foo
同一层次结构级别上的所有参与者必须具有唯一名称。 因此,如果你得到一个错误
actor name is not unique
那么你已经有一个同名演员 运行 在你想要开始新的同一级别。
由另一个具有 context.actorOf(props, "Bar")
的 Actor(例如由 Foo)启动的 Actor 比启动它们的 Actor 低一级启动:akka://<system>/Foo/Bar
.
当使用 ActorSelection 时,您传递一个锚点引用和一个相对 ActorPath
。
例如如果您在 Foo
并想向 Foo
的所有子演员发送消息,您可以使用通配符来 多播 消息:
ActorSelection(self, "./*") ! message