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

标签 java scala akka actor

在 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/

相关文章:

java - 如何用eclipse Java项目运行tomcat

scala - 为什么创建表时出现 “Hive support is required to CREATE Hive TABLE (AS SELECT)”错误?

reflection - 路径相关类型与 "underlying types",检查哪些类型?

java - Play 框架中 `play run` 和 `play akka start` 命令的区别

java - java中的速记运算符与普通运算符有何不同?

java - Facebook Android SDK 随机停止工作

Java正则表达式选择字符串中的开始和结束引号

scala - sbt 程序集文档中的 "already part of the container?"是什么意思

scala - 在 Scala 中,为什么没有 `Future.onComplete` 的实现?

java - 类型安全配置 - 从程序设置占位符值