2017-02-12 54 views
2

我有几个演员的Akka应用程序。演员树看起来像这样:Akka从另一个树枝跳过演员

   /user 
     /one   TARGET 
    /two /three 
    SOURCE 

在源演员我必须发送消息到目标演员。但是,我不知道如何正确地做到这一点。

从ActorSelection解析ActorRef似乎每次都很糟糕。

是否有任何图案?

+0

为什么解决每一次似乎是一个坏主意?相反,缓存引用是一个坏主意,因为ref可以改变,例如,演员被重新创建。 – michaJlS

+0

@michaJlS那么,如果使用重新启动策略,则ref不会更改。如何解决 - 这需要一段时间,我必须按照每个请求来做,这对我来说是个坏主意 –

回答

0

两种模式我知道和使用的有:

  1. 发送到源原始信息在传递目标ActorRef,这样的方式来源,知道要回应的目标。当TARGET与消息不同时,这很适用,并且使得单元测试变得容易。
  2. 在ESB或服务定位器中将ActorSelection中的TARGET ActorRef解析一次,然后将其传递给SOURCE并使用它。当actor系统中只有一个TARGET实例时,这很有效,但它会使单元测试更复杂一些。
+0

请您给我更多关于第二个选项的信息,因为它确实只有一个TARGET实例。 –