Мне нравится принимать метрики, необходимые FSM, до тех пор, пока не достигнет определенного состояния. Вместо того, чтобы спамить мои классы с кодом метрик, я хотел бы добавить признак, который переопределяет определенные методы и выдает сообщение при вызове метода.Instrumenting Akka FSM
Например:
trait InstrumentedActorFSM[S,D] extends Actor with FSM[S,D] {self: Actor with FSM[S,D] with Logging =>
startTimer // start measuring time here with Graphite
override def stop = {
stopTimerAndEmitMessage // emit message to graphite
super.stop
}
}
К сожалению все методы Whitin ФСМ объявлены окончательным и не может быть перезаписана. Я мог бы прибегнуть к шаблону Cake и встроить FSM для переопределения всех вызовов, но это кажется довольно неуклюжим. Любые хорошие идеи?
Это не работает для меня, как я не буду в состоянии использовать onTransition для чего-нибудь еще тогда. –
Из akka docs: Поддерживается несколько таких блоков, и все они будут вызываться не только для первого соответствующего. – shutty
Точно - вы можете зарегистрировать несколько блоков onTransition. –