Is it safe to override `receive` in an Akka FSM?

196 views Asked by At

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?

1

There are 1 answers

0
Sascha Kolberg On BEST ANSWER

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.