Akka参与者日志记录处理时间

Akka参与者日志记录处理时间,akka,Akka,我有一组阿克卡演员,我给他们每人发了几百条信息。我想跟踪该参与者的每个实例处理它收到的所有消息所花费的时间。我目前正在做的是在Actor实例中设置一个状态,如下所示: var startTime var firstCall 我在第一次调用Actor实例时设置了这两个变量。有没有其他方法可以用来跟踪Actor实例的处理时间?我希望避免在我的Actor实例中使用局部状态。这是上下文的一个很好的用例。变成 请记住,Akka actor中的接收块只是一个部分函数[Any,Unit],因此我们可以将其包

我有一组阿克卡演员,我给他们每人发了几百条信息。我想跟踪该参与者的每个实例处理它收到的所有消息所花费的时间。我目前正在做的是在Actor实例中设置一个状态,如下所示:

var startTime
var firstCall

我在第一次调用Actor实例时设置了这两个变量。有没有其他方法可以用来跟踪Actor实例的处理时间?我希望避免在我的Actor实例中使用局部状态。

这是
上下文的一个很好的用例。变成

请记住,Akka actor中的接收块只是一个
部分函数[Any,Unit]
,因此我们可以将其包装在另一个部分函数中。这与Akka的builtin采用的方法相同

然后你可以这样使用它:

class FooActor extends Actor {
  def receive = TimingReceive {
    case x: String => println("got " + x)
  }
}
在每条消息之后,参与者将记录到目前为止所花费的时间。当然,如果你想用这个变量做些别的事情,你必须调整它


当然,这种方法并不度量参与者的活动时间,只度量实际处理消息所花费的时间。如果你的接收函数创造了未来,它也不会准确。

这是
上下文的一个很好的用例。变成

请记住,Akka actor中的接收块只是一个
部分函数[Any,Unit]
,因此我们可以将其包装在另一个部分函数中。这与Akka的builtin采用的方法相同

然后你可以这样使用它:

class FooActor extends Actor {
  def receive = TimingReceive {
    case x: String => println("got " + x)
  }
}
在每条消息之后,参与者将记录到目前为止所花费的时间。当然,如果你想用这个变量做些别的事情,你必须调整它

当然,这种方法并不度量参与者的活动时间,只度量实际处理消息所花费的时间。如果你的接收函数创造了未来,它也不会准确