对于像/ temp / $ a这样的演员使用actorSelection和ask模式

问题描述 投票:0回答:1

我有一个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)!成功

但它不起作用。它总是超时

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

这种方法是否正确?另外,为什么我总是得到超时。

akka spray akka-http akka-cluster
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.