如何取消订阅 运行 时间的 Akka 日志
How to unsubscribe Akka logs in run time
我有自己的 Actor,使用配置订阅 Akka 日志
loggers = ["path.MyActor"]
MyActor
正在接收日志事件,但我想在 运行 后停止接收它们。
有办法吗? (通过获取 Akka 日志的事件总线等)[=13=]
您可以致电 system.eventStream
取消订阅 MyActor
。例如:
import akka.event.Logging._
case object UnsubscribeFromLogging
class MyActor extends Actor {
def receive = {
case InitializeLogger(_) => sender() ! LoggerInitialized
case Error(cause, logSource, logClass, message) => // ...
case Warning(logSource, logClass, message) => // ...
case Info(logSource, logClass, message) => // ...
case Debug(logSource, logClass, message) => // ...
case UnsubscribeFromLogging => context.system.eventStream.unsubscribe(self)
}
}
以上示例使用自定义 UnsubscribeFromLogging
消息:
val myActor: ActorRef = ??? // reference to MyActor
myActor ! UnsubscribeFromLogging
您可以将对 MyActor
的引用传递给另一个参与者的 unsubscribe
方法:
val myActor: ActorRef = ??? // reference to MyActor
context.system.eventStream.unsubscribe(myActor)
无论哪种方式,您都需要参考 MyActor
。您可以通过确定 MyActor
的路径(例如,让 MyActor
打印 self.path
)并将此路径传递给 context.actorSelection
.
来获得此信息
我有自己的 Actor,使用配置订阅 Akka 日志
loggers = ["path.MyActor"]
MyActor
正在接收日志事件,但我想在 运行 后停止接收它们。
有办法吗? (通过获取 Akka 日志的事件总线等)[=13=]
您可以致电 system.eventStream
取消订阅 MyActor
。例如:
import akka.event.Logging._
case object UnsubscribeFromLogging
class MyActor extends Actor {
def receive = {
case InitializeLogger(_) => sender() ! LoggerInitialized
case Error(cause, logSource, logClass, message) => // ...
case Warning(logSource, logClass, message) => // ...
case Info(logSource, logClass, message) => // ...
case Debug(logSource, logClass, message) => // ...
case UnsubscribeFromLogging => context.system.eventStream.unsubscribe(self)
}
}
以上示例使用自定义 UnsubscribeFromLogging
消息:
val myActor: ActorRef = ??? // reference to MyActor
myActor ! UnsubscribeFromLogging
您可以将对 MyActor
的引用传递给另一个参与者的 unsubscribe
方法:
val myActor: ActorRef = ??? // reference to MyActor
context.system.eventStream.unsubscribe(myActor)
无论哪种方式,您都需要参考 MyActor
。您可以通过确定 MyActor
的路径(例如,让 MyActor
打印 self.path
)并将此路径传递给 context.actorSelection
.