在Akka FSM中覆盖`receive`是否安全?(Is it safe to override `receive` in an Akka FSM?)

编程入门 行业动态 更新时间:2024-10-26 07:26:52
在Akka FSM中覆盖`receive`是否安全?(Is it safe to override `receive` in an Akka FSM?)

我用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.

更多推荐

本文发布于:2023-07-30 01:33:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1321420.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:FSM   Akka   receive   override   safe

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!