Package org.akka.essentials.zeromq.example2

Source Code of org.akka.essentials.zeromq.example2.RouterActor

package org.akka.essentials.zeromq.example2;

import java.util.Random;

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.Bind;
import akka.zeromq.Frame;
import akka.zeromq.HighWatermark;
import akka.zeromq.Listener;
import akka.zeromq.SocketOption;
import akka.zeromq.ZMQMessage;
import akka.zeromq.ZeroMQExtension;

public class RouterActor extends UntypedActor {
  public static final Object TICK = "TICK";

  Random random = new Random(3);
  int count = 0;
  Cancellable cancellable;

  ActorRef routerSocket = ZeroMQExtension.get(getContext().system())
      .newRouterSocket(
          new SocketOption[] { new Listener(getSelf()),
              new Bind("tcp://127.0.0.1:1237"),
              new HighWatermark(50000) });
  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)) {

      if (random.nextBoolean() == true) {
        routerSocket.tell(new ZMQMessage(new Frame("A"), new Frame(
            "This is the workload for A")));
      } else {
        routerSocket.tell(new ZMQMessage(new Frame("B"), new Frame(
            "This is the workload for B")));

      }
      count++;
      if (count == 10)
        cancellable.cancel();

    } else if (message instanceof ZMQMessage) {
      ZMQMessage m = (ZMQMessage) message;
      String replier = new String(m.payload(0));
      String msg = new String(m.payload(1));
      log.info("Received message from {} with mesg -> {}", replier, msg);
    }

  }

}
TOP

Related Classes of org.akka.essentials.zeromq.example2.RouterActor

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.