如何记录来自Akka(Java)的所有传入消息

时间:2014-01-08 16:12:18

标签: java scala akka actor

在Scala中,您可以使用LoggingReceive包装receive函数。您如何从Java API实现相同的目标?

def receive = {
  LoggingReceive {
    case x ⇒ // do something
  }
}

1 个答案:

答案 0 :(得分:7)

Scala API具有LoggingReceive装饰器,因为部分函数文字使得在所有情况下表达要做的事情变得尴尬(比如这个日志记录)。

在Java中,您没有遇到此问题,因为始终会调用onReceive方法,并且您可以在顶部放置一个日志记录语句,以查看该actor接收的所有消息。作为额外的奖励,您可以决定在哪个级别记录它们; - )

如果你想以配置设置akka.actor.debug.receive为条件进行日志记录(就像Scala一样),那么你可以说例如

if (getContext().system().settings().AddLoggingReceive())
  log.debug("received message of type {}", msg.getClass());