|
Akka/Scala example source code file (StatsAggregator.java)
The StatsAggregator.java Akka example source codepackage sample.cluster.stats; import java.util.ArrayList; import java.util.List; import java.util.concurrent.TimeUnit; import sample.cluster.stats.StatsMessages.JobFailed; import sample.cluster.stats.StatsMessages.StatsResult; import scala.concurrent.duration.Duration; import akka.actor.ActorRef; import akka.actor.ReceiveTimeout; import akka.actor.UntypedActor; //#aggregator public class StatsAggregator extends UntypedActor { final int expectedResults; final ActorRef replyTo; final List<Integer> results = new ArrayList<Integer>(); public StatsAggregator(int expectedResults, ActorRef replyTo) { this.expectedResults = expectedResults; this.replyTo = replyTo; } @Override public void preStart() { getContext().setReceiveTimeout(Duration.create(3, TimeUnit.SECONDS)); } @Override public void onReceive(Object message) { if (message instanceof Integer) { Integer wordCount = (Integer) message; results.add(wordCount); if (results.size() == expectedResults) { int sum = 0; for (int c : results) sum += c; double meanWordLength = ((double) sum) / results.size(); replyTo.tell(new StatsResult(meanWordLength), getSelf()); getContext().stop(getSelf()); } } else if (message == ReceiveTimeout.getInstance()) { replyTo.tell(new JobFailed("Service unavailable, try again later"), getSelf()); getContext().stop(getSelf()); } else { unhandled(message); } } } //#aggregator Other Akka source code examplesHere is a short list of links related to this Akka StatsAggregator.java source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.