Skip to content

Instantly share code, notes, and snippets.

@ANorwell
Created August 21, 2012 20:55
Show Gist options
  • Save ANorwell/3419348 to your computer and use it in GitHub Desktop.
Save ANorwell/3419348 to your computer and use it in GitHub Desktop.
dealer/router attempt in akka
package com.test
import akka.actor._
import akka.zeromq._
import akka.event.LoggingReceive
class DealerTestActor(val address: String) extends Actor with ActorLogging {
val reqSocket = context.system.newSocket(SocketType.Dealer, Connect(address))
def receive = LoggingReceive {
case x: String ⇒
println("Sending msg")
reqSocket ! ZMQMessage(Seq(Frame("msg")))
case m: ZMQMessage ⇒
val s = new String(m.payload(0))
println("Got rsp message: " + s)
case x ⇒ println("Req default case: " + x)
}
}
class RouterTestActor(val address: String) extends Actor with ActorLogging {
val repSocket = context.system.newSocket(SocketType.Router, Bind(address), Listener(self), HighWatermark(50000))
def receive = LoggingReceive {
case m @ ZMQMessage(frames) ⇒
val sender = new String(m.payload(0))
val s = new String(m.payload(1))
println("Got req message: " + s + " first frame: " + sender)
repSocket ! m
case x ⇒ println("Got default case: " + x)
}
}
object TestDealerRouter extends App {
val address = "tcp://0.0.0.0:4109"
implicit val system = ActorSystem("zmqtest")
val req = system.actorOf(Props(new DealerTestActor(address)), "DealerActor")
val rep = system.actorOf(Props(new RouterTestActor(address)), "RouterActor")
Thread.sleep(1000)
while (true) {
req ! "go"
Thread.sleep(1000)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment