我有使用Akka库编写的应用程序,我想使用New Relic来监视它。我注意到,在Play应用程序的情况下,请求处理期间的所有异步操作都是properly handled,并且所有涉及的参与者都显示在Web事务跟踪中。
但是当我尝试使用custom java transaction traces来测试纯Akka应用程序时,我无法获得相同的结果,所有跟踪只包含一行doJob
方法名称。代码如下:
case class NewRelicRequest(...) extends Request { ... }
case class NewRelicResponse(...) extends Response { ... }
class MyApiActor extends Actor {
def receive = {
case MyRequest(_) => doJob(...)
case MyOtherRequest(_) => doOtherJob(...)
}
@Trace(dispatcher=true)
private def doJob(...) {
NewRelic.setRequestAndResponse(NewRelicRequest("/doJob"), NewRelicResponse(...))
fooActor ! msg
}
@Trace(dispatcher=true)
private def doOtherJob(...) {
NewRelic.setRequestAndResponse(NewRelicRequest("/doOtherJob"), NewRelicResponse(...))
(barActor ? msg).pipeTo(sender)
}
}
有人可以解释支持哪些情况,以及如何实现类似于我在Play应用中看到的异步跟踪?