使用actorSelection与问题模式为/ temp / $ a

时间:2018-02-20 12:40:20

标签: akka spray akka-http akka-cluster

我有一个ActorSystem(例如A),它产生其他ActorSystem(例如B)。当B出现时,它知道A的地址并执行cluster.join()。一旦集群加入,演员就可以相互沟通。

在我的场景中:

  • 我有一个REST请求到Spray框架产生一个新的 ActorSystem。
  • 在请求处理程序中,我向ActorSystem A询问(?)
  • " A"接收消息后,我将询问地址(?)请求存储到DB。这是一个临时演员,像" akka:// ActorSystemA / temp / $ a"
  • " A"使用ActorSystem" B"
  • 生成一个新的JVM
  • 一旦" B"出现了" A"获取MemberUp消息。我从DB中选择了ask temporary actorRef并尝试使用类似

    的方式发送回复

    context.actorSelection(" akka:// ActorSystemA / temp / $ a").resolveOne(3.seconds)!成功

但它不起作用。总是超时

我尝试在临时演员上添加一个手表。演员没有被终止,但我无法沟通。

这种做法是否正确?另外,为什么我总是会超时。

1 个答案:

答案 0 :(得分:0)

事实证明存储临时引用是一个坏主意。你永远不应该这样做。我改变了设计以解决这个问题。