| package sample.cluster.transformation; |
| |
| import org.apache.pekko.actor.typed.ActorRef; |
| import org.apache.pekko.actor.typed.Behavior; |
| import org.apache.pekko.actor.typed.javadsl.Behaviors; |
| import org.apache.pekko.actor.typed.receptionist.Receptionist; |
| import org.apache.pekko.actor.typed.receptionist.ServiceKey; |
| import com.fasterxml.jackson.annotation.JsonCreator; |
| import sample.cluster.CborSerializable; |
| |
| //#worker |
| public class Worker { |
| |
| public static ServiceKey<Worker.TransformText> WORKER_SERVICE_KEY = |
| ServiceKey.create(TransformText.class, "Worker"); |
| |
| interface Command extends CborSerializable {} |
| |
| public static final class TransformText implements Command { |
| public final String text; |
| public TransformText(String text, ActorRef<TextTransformed> replyTo) { |
| this.text = text; |
| this.replyTo = replyTo; |
| } |
| public final ActorRef<TextTransformed> replyTo; |
| } |
| public static final class TextTransformed implements CborSerializable { |
| public final String text; |
| @JsonCreator |
| public TextTransformed(String text) { |
| this.text = text; |
| } |
| } |
| |
| public static Behavior<Command> create() { |
| return Behaviors.setup(context -> { |
| context.getLog().info("Registering myself with receptionist"); |
| context.getSystem().receptionist().tell(Receptionist.register(WORKER_SERVICE_KEY, context.getSelf().narrow())); |
| |
| return Behaviors.receive(Command.class) |
| .onMessage(TransformText.class, command -> { |
| command.replyTo.tell(new TextTransformed(command.text.toUpperCase())); |
| return Behaviors.same(); |
| }).build(); |
| }); |
| } |
| } |
| //#worker |