diff options
Diffstat (limited to 'src/main/scala/akka/MailboxAspect.scala')
-rw-r--r-- | src/main/scala/akka/MailboxAspect.scala | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/main/scala/akka/MailboxAspect.scala b/src/main/scala/akka/MailboxAspect.scala new file mode 100644 index 00000000..3dfc9c6a --- /dev/null +++ b/src/main/scala/akka/MailboxAspect.scala @@ -0,0 +1,26 @@ +package akka + +import org.aspectj.lang.annotation.{Pointcut, Before, Aspect} +import java.util.concurrent.{TimeUnit, Executors} + +@Aspect +class MailboxAspect { + + @Pointcut("execution(akka.dispatch.Mailbox.new(..))") + protected def mailboxMonitor:Unit = {} + + @Before("mailboxMonitor() && this(mb)") + def before(mb: akka.dispatch.Mailbox) : Unit = { + val scheduler = Executors.newScheduledThreadPool(1); + + scheduler.scheduleAtFixedRate(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) + } + }, 6, 4, TimeUnit.SECONDS) + } +} |