package org.akka.essentials.zeromq.example4; import akka.actor.ActorRef; import akka.actor.Cancellable; import akka.actor.UntypedActor; import akka.util.Duration; import akka.zeromq.Bind; import akka.zeromq.Frame; import akka.zeromq.Listener; import akka.zeromq.SocketOption; import akka.zeromq.ZMQMessage; import akka.zeromq.ZeroMQExtension; public class PushActor extends UntypedActor { public static final Object TICK = "TICK"; int count = 0; Cancellable cancellable; ActorRef pushSocket = ZeroMQExtension.get(getContext().system()) .newPushSocket( new SocketOption[] { new Bind("tcp://127.0.0.1:1237"), new Listener(getSelf()) }); @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)) { count++; pushSocket.tell(new ZMQMessage( new Frame("Hi there (" + count + ")"))); if (count == 5) cancellable.cancel(); } } }