Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static void main(String[] args) {
- System.out.println("************************** start *****************************");
- new AkkaWay().run();
- System.out.println("************************** END *****************************");
- }
- private void run() {
- ActorSystem system = ActorSystem.create("CalcSystem");
- ActorRef master = system.actorOf(Master.createMaster(), "master");
- master.tell(new Calculate(), ActorRef.noSender());
- while(!master.isTerminated()){
- try{
- //System.out.println("*********************************** Thread *************************************************");
- Thread.sleep(100);
- }catch(Exception e){
- e.printStackTrace();
- }
- }
- }
- public Master() {
- workerRouter = this.getContext().actorOf(Worker.createWorker().withRouter(new RoundRobinRouter(4)),"workerRouter");
- }
- @Override
- public void onReceive(Object message) {
- if (message instanceof Calculate) {
- time.start();
- processMessages();
- } else if (message instanceof Result) {
- list.add(((Result) message).getFactorial());
- if (list.size() == messages)
- end();
- } else {
- unhandled(message);
- }
- }
- private void processMessages()
- {
- //read data from file/database (40 millions rows )
- for (int i = 0; i < rows; i++) {
- workerRouter.tell(new Work(), getSelf());// each row send
- }
- }
- private void end() {
- time.end();
- System.out.println("Done: " + time.elapsedTimeMilliseconds()+"["+time.elapsedTimeMilliseconds()/1000+" secs]");
- getContext().system().shutdown();
- }
- public static Props createMaster() {
- return Props.create(Master.class, new ArraySeq<Object>(0));
- }
- @Override
- public void onReceive(Object message) {
- if (message instanceof Work) {
- //evaluate Groovy expression
- getSender().tell(new Result(bigInt), getSelf());
- } else
- unhandled(message);
- }
- public static Props createWorker() {
- return Props.create(Worker.class, new ArraySeq<Object>(0));
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement