diff options
Diffstat (limited to 'src/main/scala/akka/MailboxAspect.scala')
-rw-r--r-- | src/main/scala/akka/MailboxAspect.scala | 37 |
1 files changed, 21 insertions, 16 deletions
diff --git a/src/main/scala/akka/MailboxAspect.scala b/src/main/scala/akka/MailboxAspect.scala index 3dfc9c6a..f52a2eee 100644 --- a/src/main/scala/akka/MailboxAspect.scala +++ b/src/main/scala/akka/MailboxAspect.scala @@ -1,26 +1,31 @@ package akka -import org.aspectj.lang.annotation.{Pointcut, Before, Aspect} -import java.util.concurrent.{TimeUnit, Executors} +import org.aspectj.lang.annotation._ +import scala.concurrent.duration._ +import com.newrelic.api.agent.NewRelic -@Aspect -class MailboxAspect { +@Aspect("perthis(mailboxMonitor())") +class MailboxAspect extends ActorSystem { - @Pointcut("execution(akka.dispatch.Mailbox.new(..))") - protected def mailboxMonitor:Unit = {} + @Pointcut("execution(akka.dispatch.Mailbox.new(..)) && !within(MailboxAspect)") + protected def mailboxMonitor():Unit = {} @Before("mailboxMonitor() && this(mb)") def before(mb: akka.dispatch.Mailbox) : Unit = { - val scheduler = Executors.newScheduledThreadPool(1); - - scheduler.scheduleAtFixedRate(new Runnable { + actorSystem.scheduler.schedule(5 seconds, 6 second, new Runnable { def run() { - println("Mailbox: " + mb.actor.self.path) - println("NOM: " + mb.numberOfMessages) - println("Messages: " + mb.hasMessages) - print("Dispatcher throughput: " + mb.dispatcher.throughput) - println(mb.dispatcher.id) + + val actorName = mb.actor.self.path.toString + + println(s"Sending metrics to Newrelic MailBoxMonitor -> ${actorName}") + + + NewRelic.recordMetric(s"${actorName}:Mailbox:NumberOfMessages",mb.numberOfMessages) + NewRelic.recordMetric(s"${actorName}:Mailbox:MailboxDispatcherThroughput",mb.dispatcher.throughput) + + NewRelic.addCustomParameter(s"${actorName}:Mailbox:Status", mb.hasMessages.toString) + NewRelic.addCustomParameter(s"${actorName}:Mailbox:HasMessages", mb.hasMessages.toString) } - }, 6, 4, TimeUnit.SECONDS) + }) } -} +}
\ No newline at end of file |