Scala 在Akka FSM中覆盖'receive'安全吗?
我和Akka创建了一个FSM。然而,我的FSM并不仅仅传递与它的FSM状态相关的消息。它的子代也可以将ActorRef传递给它,然后我的FSM应该进一步传递给它的父代。由于Akka中的FSM(自然)也是参与者,因此我想覆盖Scala 在Akka FSM中覆盖'receive'安全吗?,scala,akka,akka-fsm,Scala,Akka,Akka Fsm,我和Akka创建了一个FSM。然而,我的FSM并不仅仅传递与它的FSM状态相关的消息。它的子代也可以将ActorRef传递给它,然后我的FSM应该进一步传递给它的父代。由于Akka中的FSM(自然)也是参与者,因此我想覆盖receive,以捕获那些ActorRefs。然而,这样做破坏了参与者的FSM功能。处理这种情况的正确方法是什么?当未处理时,可以在中处理与任何FSM状态无关的消息: whenUnhandled { case Event(someActorRef: ActorRef, _)
receive
,以捕获那些ActorRefs
。然而,这样做破坏了参与者的FSM功能。处理这种情况的正确方法是什么?当未处理时,可以在中处理与任何FSM状态无关的消息:
whenUnhandled {
case Event(someActorRef: ActorRef, _) =>
context.parent ! someActorRef
stay()
}
尽管如此,覆盖receive
也应该有效。只需提及Akka FSM有许多缺点: