在 Scala 中,您可以使用 LoggingReceive 包装接收函数。您如何通过 Java API 实现同样的目标?
def receive = {
LoggingReceive {
case x ⇒ // do something
}
}
最佳答案
Scala API 有 LoggingReceive
装饰器,因为部分函数字面量使得在所有情况下表达要完成的事情变得很尴尬(比如这个日志记录)。
在 Java 中你没有这个问题,因为你的 onReceive
方法总是被调用,你可以在顶部放置一个日志语句来查看 actor 收到的所有消息。作为额外的奖励,您可以决定在哪个级别记录它们;-)
如果你想让你的日志记录以配置设置 akka.actor.debug.receive
为条件(就像 Scala 一样),那么你可以举个例子
if (getContext().system().settings().AddLoggingReceive())
log.debug("received message of type {}", msg.getClass());
关于java - 如何记录来自 Akka (Java) 的所有传入消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21000843/