in pekko-sample-cluster-java/src/main/java/sample/cluster/transformation/Frontend.java [85:110]
private Behavior<Event> onTick() {
if (workers.isEmpty()) {
getContext().getLog().warn("Got tick request but no workers available, not sending any work");
} else {
// how much time can pass before we consider a request failed
Duration timeout = Duration.ofSeconds(5);
ActorRef<Worker.TransformText> selectedWorker = workers.get(jobCounter % workers.size());
getContext().getLog().info("Sending work for processing to {}", selectedWorker);
String text = "hello-" + jobCounter;
getContext().ask(
Worker.TextTransformed.class,
selectedWorker,
timeout,
responseRef -> new Worker.TransformText(text, responseRef),
(response, failure) -> {
if (response != null) {
return new TransformCompleted(text, response.text);
} else {
return new JobFailed("Processing timed out", text);
}
}
);
jobCounter++;
}
return this;
}