当我使用像And这样的行为组合器时,akka类型是否会创建actor?

时间:2015-12-17 17:03:08

标签: akka akka-typed

在我的系统中,我希望演员A向演员ReplyGenerator发送相同的消息。 我没有创建三个演员,而是考虑将他们的行为与And行为污染者结合起来,然后将该行为传递给object Foobar { def foobar(): Behavior[Request] = ContextAware[Request] { context => val foo1 = context.spawn(Props(Foo1.behavior()), "foo1") val foo2 = context.spawn(Props(Foo2.behavior()), "foo2") val foo3 = context.spawn(Props(Foo3.behavior()), "foo3") val generator = context.spawn(Props(ReplyGenerator.behavior(List(foo1, foo2, foo3))), "generator") Static { case request: Request => generator ! request } } }

如果我这样做,会创建多少个演员?我只会得到一个有三个行为的演员,或三个有不同行为的演员吗?

这是我的真实代码使用非和方法,具体(请参阅ReplyGenerator如何传递对其他actor的引用):

object ReplyGenerator {
def behavior(subscribers: List[ActorRef[Reply]]): Behavior[Request] = {
    Static {
      case request: Request =>
        subscribers.foreach(_ ! Reply.empty)
    }
 }

以下是向所有订阅者发送相同消息的And行为:

{{1}}

考虑到我希望演员foo 1,2,3并行运行,可以在这里使用{{1}}组合器吗?

谢谢。

1 个答案:

答案 0 :(得分:2)

如果你的意思是执行并行性,那么你将不得不像在示例代码中那样创建单独的Actors(通过单独的spawn调用) - 使用And只会创建一个运行一个接一个地包含行为。