测试AKKA 2.6(杀戮和毒药的替代品)
我对《阿克卡经典》中的一位演员进行了测试,他正在测试持久性 逻辑很简单:测试AKKA 2.6(杀戮和毒药的替代品),akka,akka-persistence,akka-typed,Akka,Akka Persistence,Akka Typed,我对《阿克卡经典》中的一位演员进行了测试,他正在测试持久性 逻辑很简单: 创建一个演员并发送一系列事件 根据测试,使用akka.actor.Kill或akka.actor.toxinkill停止参与者 再次启动actor并测试它是否已正确恢复 我正在将它迁移到AKKA 2.6和“AKKA类型”,但是Kill和毒杀都不可用 从文件中: 类型中不支持毒药丸。相反,如果您需要请求 要停止的参与者您应该定义一条消息,该参与者 理解并让其返回行为。收到时停止 信息 但是,使用TestKit.stop实用程
AKKA.actor.Typed.scaladsl.adapter.\u
并发送信号AKKA.actor.Typed.internal.毒物丸时,ActorRef
可以使用toClassic
定义receiveSignal
并记录所有信号时,避孕药执行预期的工作,您的参与者停止
。接收信号{
外壳(ctx,信号)=>
调试(“{}”,信号)
停止
}
首先毒药
然后PostStop
记录在我的案例中。Hi@sourcecodebot。谢谢你的回复。关于它的几件事:1。仅为支持测试而添加不必要的运行时代码不是一个好的做法。2.它是一个内部类,因此使用它不是一个好的实践。3.此实现优雅地停止了actor,类似于经典的毒药,但它不同于抛出ActorKilledException的Kill,后者由主管管理。一个新问题:演员是否应该返回。toClassic支持经典的杀戮和毒药丸?嗨@angelcervera,为了匹配类型化的内部信号api,我建议不要使用经典命令toClassic
允许您发送行为类型信息中未定义的信号。在处理您编辑的问题时,建议定义从您的行为命令类型扩展的关闭
或中断
,并在这种情况下返回行为.停止
。