在测试akka actors系统时,我用多个嵌套的actor实例化它 . 作为入口点,父actor生成嵌套的子actor的树 . 与 生产环境 树类似,但包含来自H2 db源的测试数据 .
我需要验证整个系统的一部分(假设单个actor状态),由于数据不一致,无法从其他系统中单独访问或实例化 .
我知道,对于独立的演员测试,可以通过使用下面的构造来获得它的内部状态:
TestActorRef<RoutingRequestHandlerActor> fsmRef = TestActorRef.create(getSystem(), RoutingRequestHandler.props(), getTestActor());
RoutingRequestHandlerActor fsm = fsmRef.underlyingActor();
但如果间接创造演员,我该怎么办?是否有可能以某种方式包装它来获得 Actor
而不是 ActorRef
?
作为替代解决方案,我知道可以使用状态描述发送其他诊断消息 . 但也许还有另一种更聪明的方式呢?
1 回答
在一般情况下,不可能在远程服务器上创建可能的Actor实例 .
这就是我建议你做的 . 只需发送一条特殊消息,将RetrieveState()称为actor,并向actor添加一些代码以响应其特定于应用程序的状态 .
这就是Akka在内部用于类似目的的方式 . 看一下Identify消息:
https://doc.akka.io/japi/akka/current/akka/actor/Identify.html