Регистрируйте все сообщения в Akka без изменения всех методов получения
Я хочу регистрировать все полученные сообщения для всех участников в моем приложении Akka.
Существует конфигурация akka.actor.debug.receive
, которая будет регистрировать все сообщения, отправленные актору, если этот метод получения акторов является LoggingReceive
.
Согласно http://doc.akka.io/docs/akka/current/additional/faq.html это означает обертывание всех методов приема с LoggingReceive
как в Как регистрировать все входящие сообщения из Akka (Java)
def receive = {
LoggingReceive {
case x ⇒ // do something
}
}
Есть ли способ сделать это неявно или с помощью конфигурации?
1 ответ:
Насколько я знаю, нет, но вы очень легко сможете сделать что-то вроде этого:
trait LoggingReceiveActor extends Actor{ def receive = LoggingReceive(loggedReceive) def loggedReceive:Receive } class MyActor extends LoggingReceiveActor{ def loggedReceive = { case _ => } }
Любой актер, который наследует от
LoggingReceiveActor
, теперь должен предоставить impl дляloggingReceive
, и если вы это сделаете, то при включении ведения журнала отладки этот тип актора будет регистрировать полученные сообщения.