我用Akka创建了一个FSM。 但是,我的FSM不仅会传递与其FSM状态相关的消息。 它的孩子们也可以将ActorRef传递给它,然后我的FSM应该进一步传递给它的父级。 由于Akka中的FSM(自然)也是actor,我想重写receive来捕获那些ActorRefs 。 但是,这样做打破了演员的FSM功能。 处理这种情况的正确方法是什么?
I created an FSM with Akka. However, my FSM doesn't only get messages passed that are relevant for its FSM state. Its children may also pass ActorRefs up to it, which my FSM should then pass further up to its parent. Since FSMs in Akka are (naturally) also actors, I would like to override receive to catch those ActorRefs. However, doing that broke the FSM functionality of the actor. What's the proper way to handle a situation like this?
最满意答案
可以在whenUnhandled处理与任何FSM状态whenUnhandled :
whenUnhandled { case Event(someActorRef: ActorRef, _) => context.parent ! someActorRef stay() }虽然,压倒性的receive应该,afaik,也工作。
Messages that are not relevant for any FSM state can be handled in whenUnhandled:
whenUnhandled { case Event(someActorRef: ActorRef, _) => context.parent ! someActorRef stay() }Though, overriding receive should, afaik, work, too.
更多推荐
发布评论