加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 记录Akka中的所有消息,而不修改所有接收方法

发布时间:2020-12-16 18:16:43 所属栏目:安全 来源:网络整理
导读:我想将所有收到的消息记录到我的Akka应用程序中的所有演员. 有一个配置akka.actor.debug.receive,如果actor接收方法是LoggingReceive,它将记录发送给actor的所有消息. 根据http://doc.akka.io/docs/akka/current/additional/faq.html,它意味着使用LoggingRec
我想将所有收到的消息记录到我的Akka应用程序中的所有演员.
有一个配置akka.actor.debug.receive,如果actor接收方法是LoggingReceive,它将记录发送给actor的所有消息.

根据http://doc.akka.io/docs/akka/current/additional/faq.html,它意味着使用LoggingReceive包装所有接收方法,如How to log all incoming messages from Akka (Java)所示

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

有没有办法隐式地或通过配置?

解决方法

不是我所知道的,但你应该很容易做到这样的事情:

trait LoggingReceiveActor extends Actor{

  def receive = LoggingReceive(loggedReceive)

  def loggedReceive:Receive
}

class MyActor extends LoggingReceiveActor{

  def loggedReceive = {
    case _ => 
  }
}

现在,任何继承自LoggingReceiveActor的actor都必须为loggingReceive提供impl,如果你这样做,那么当启用调试日志时,这种actor将记录收到的消息.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读