aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/kamon/executor/eventbus.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/kamon/executor/eventbus.scala')
-rw-r--r--src/main/scala/kamon/executor/eventbus.scala82
1 files changed, 82 insertions, 0 deletions
diff --git a/src/main/scala/kamon/executor/eventbus.scala b/src/main/scala/kamon/executor/eventbus.scala
new file mode 100644
index 00000000..d64ff444
--- /dev/null
+++ b/src/main/scala/kamon/executor/eventbus.scala
@@ -0,0 +1,82 @@
+package kamon.executor
+
+import akka.event.ActorEventBus
+import akka.event.LookupClassification
+import akka.actor.{ActorRef, ActorSystem, Props, Actor}
+import java.util.concurrent.TimeUnit
+import kamon.metric.NewRelicReporter
+
+import com.yammer.metrics.core.{MetricName, MetricsRegistry}
+import com.yammer.metrics.reporting.ConsoleReporter
+
+
+trait Message
+
+case class PostMessage(text:String) extends Message
+
+case class MessageEvent(val channel:String, val message:Message)
+
+class AppActorEventBus extends ActorEventBus with LookupClassification{
+ type Event = MessageEvent
+ type Classifier=String
+ protected def mapSize(): Int={
+ 10
+ }
+
+ protected def classify(event: Event): Classifier={
+ event.channel
+ }
+
+ protected def publish(event: Event, subscriber: Subscriber): Unit={
+ subscriber ! event
+ }
+}
+
+object TryAkka extends App{
+ val system = ActorSystem("MySystem")
+ val appActorEventBus=new AppActorEventBus
+ val NEW_POST_CHANNEL="/posts/new"
+ val subscriber = system.actorOf(Props(new Actor {
+ def receive = {
+ case d: MessageEvent => println(d)
+ }
+ }))
+
+
+
+
+ case class Ping()
+ case class Pong()
+
+ class PingActor(val target: ActorRef) extends Actor {
+ def receive = {
+ case Pong() => target ! Ping()
+ }
+ }
+
+ class PongActor extends Actor {
+ var i = 0
+ def receive = {
+ case Ping() => {
+ i=i+1
+ sender ! Pong()
+ }
+ }
+ }
+
+
+ /*
+ val newRelicReporter = new NewRelicReporter(registry)
+ newRelicReporter.start(1, TimeUnit.SECONDS)
+
+*/
+
+ for(i <- 1 to 8) {
+ val ping = system.actorOf(Props(new PingActor(system.actorOf(Props[PongActor], s"ping-actor-${i}"))), s"pong-actor-${i}")
+ ping ! Pong()
+ }
+
+
+/* appActorEventBus.subscribe(subscriber, NEW_POST_CHANNEL)
+ appActorEventBus.publish(MessageEvent(NEW_POST_CHANNEL,PostMessage(text="hello world")))*/
+} \ No newline at end of file