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将记录收到的消息. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |