Chr*_*ris 4 java scala actor akka
在Scala中,您可以使用LoggingReceive包装receive函数.您如何从Java API实现相同的目标?
def receive = {
LoggingReceive {
case x ? // do something
}
}
Run Code Online (Sandbox Code Playgroud)
Scala API具有LoggingReceive装饰器,因为部分函数文字使得在所有情况下表达要做的事情都很尴尬(比如这个日志记录).
在Java中,您没有遇到此问题,因为onReceive始终会调用您的方法,并且您可以在顶部放置一个日志记录语句,以查看该actor接收的所有消息.作为一个额外的奖励,你可以决定在哪个级别记录它们;-)
如果你想让你的日志记录以配置设置akka.actor.debug.receive为条件(就像Scala一样),那么你可以这样说
if (getContext().system().settings().AddLoggingReceive())
log.debug("received message of type {}", msg.getClass());
Run Code Online (Sandbox Code Playgroud)