diff options
author | Diego <diegolparra@gmail.com> | 2014-08-29 02:33:04 -0300 |
---|---|---|
committer | Diego <diegolparra@gmail.com> | 2014-08-29 02:33:04 -0300 |
commit | dc5c3fb65085af225464768e0e672075713135d6 (patch) | |
tree | 21ef78c2aeb0601f93a8d868e4f2a810845c173e /kamon-playground/src/main/scala | |
parent | 2b56ce068e928de6ecae993e5038ef33394712aa (diff) | |
download | Kamon-dc5c3fb65085af225464768e0e672075713135d6.tar.gz Kamon-dc5c3fb65085af225464768e0e672075713135d6.tar.bz2 Kamon-dc5c3fb65085af225464768e0e672075713135d6.zip |
+ core: provide metrics for routers
* processing-time
* errors
* time-in-mailbox
closes #62
Diffstat (limited to 'kamon-playground/src/main/scala')
-rw-r--r-- | kamon-playground/src/main/scala/test/SimpleRequestProcessor.scala | 40 |
1 files changed, 39 insertions, 1 deletions
diff --git a/kamon-playground/src/main/scala/test/SimpleRequestProcessor.scala b/kamon-playground/src/main/scala/test/SimpleRequestProcessor.scala index 301a9bbd..58a1478c 100644 --- a/kamon-playground/src/main/scala/test/SimpleRequestProcessor.scala +++ b/kamon-playground/src/main/scala/test/SimpleRequestProcessor.scala @@ -23,7 +23,11 @@ import spray.httpx.RequestBuilding import scala.concurrent.{ Await, Future } import kamon.spray.KamonTraceDirectives import scala.util.Random -import akka.routing.RoundRobinPool +<<<<<<< Updated upstream +import akka.routing.{ RoundRobinRoutingLogic, Router, ActorRefRoutee, RoundRobinPool } +======= +import akka.routing.{RoundRobinRoutingLogic, Router, ActorRefRoutee, RoundRobinPool} +>>>>>>> Stashed changes import kamon.trace.TraceRecorder import kamon.Kamon import kamon.metric._ @@ -65,7 +69,15 @@ object SimpleRequestProcessor extends App with SimpleRoutingApp with RequestBuil //Kamon(UserMetrics).registerGauge("test-gauge")(() => 10L) val pipeline = sendReceive +<<<<<<< Updated upstream + val replier = system.actorOf(Props[Replier].withRouter(RoundRobinPool(nrOfInstances = 4)), "replier") + val master = system.actorOf(Props[Replier].withRouter(RoundRobinPool(nrOfInstances = 7)), "master") + +======= val replier = system.actorOf(Props[Replier].withRouter(RoundRobinPool(nrOfInstances = 2)), "replier") + val master = system.actorOf(Props[Master], "Master") + master ! Work() +>>>>>>> Stashed changes val random = new Random() startServer(interface = "localhost", port = 9090) { @@ -98,7 +110,12 @@ object SimpleRequestProcessor extends App with SimpleRoutingApp with RequestBuil path("ok") { traceName("OK") { complete { +<<<<<<< Updated upstream + (master ? "Ok").mapTo[String] +======= + master ! Work() "ok" +>>>>>>> Stashed changes } } } ~ @@ -127,6 +144,27 @@ object SimpleRequestProcessor extends App with SimpleRoutingApp with RequestBuil } +case class Work() +class Master extends Actor { + var router = { + val routees = Vector.fill(5) { + val r = context.actorOf(Props[PrintWhatever]) + context.watch(r) + ActorRefRoutee(r) + } + Router(RoundRobinRoutingLogic(), routees) + } + def receive = { + case w: Work => + router.route(w, sender()) + case Terminated(a) => + router = router.removeRoutee(a) + val r = context.actorOf(Props[PrintWhatever]) + context watch r + router = router.addRoutee(r) + } +} + class PrintWhatever extends Actor { def receive = { case TickMetricSnapshot(from, to, metrics) ⇒ |