Регистрируйте все сообщения в 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 5

1 ответ:

Насколько я знаю, нет, но вы очень легко сможете сделать что-то вроде этого:

trait LoggingReceiveActor extends Actor{

  def receive = LoggingReceive(loggedReceive)

  def loggedReceive:Receive
}

class MyActor extends LoggingReceiveActor{

  def loggedReceive = {
    case _ => 
  }
}

Любой актер, который наследует от LoggingReceiveActor, теперь должен предоставить impl для loggingReceive, и если вы это сделаете, то при включении ведения журнала отладки этот тип актора будет регистрировать полученные сообщения.