package org.akka.essentials.zeromq.example3.client; import akka.actor.ActorRef; import akka.actor.Cancellable; import akka.actor.UntypedActor; import akka.event.Logging; import akka.event.LoggingAdapter; import akka.util.Duration; import akka.zeromq.Connect; import akka.zeromq.Frame; import akka.zeromq.Listener; import akka.zeromq.SocketOption; import akka.zeromq.ZMQMessage; import akka.zeromq.ZeroMQExtension; public class ClientActor extends UntypedActor { public static final Object TICK = "TICK"; int count = 0; Cancellable cancellable; ActorRef reqSocket = ZeroMQExtension.get(getContext().system()) .newReqSocket( new SocketOption[] { new Connect("tcp://127.0.0.1:1237"), new Listener(getSelf()) }); LoggingAdapter log = Logging.getLogger(getContext().system(), this); @Override public void preStart() { cancellable = getContext() .system() .scheduler() .schedule(Duration.parse("1 second"), Duration.parse("1 second"), getSelf(), TICK); } @Override public void onReceive(Object message) throws Exception { if (message.equals(TICK)) { // send a message to the replier system reqSocket.tell(new ZMQMessage(new Frame("Hi there! (" + getContext().self().hashCode() + ")->"))); count++; if (count == 10) cancellable.cancel(); } else if (message instanceof ZMQMessage) { ZMQMessage m = (ZMQMessage) message; String mesg = new String(m.payload(0)); log.info("Received msg! {}", mesg); } } }