commit 829f4a5b0852c771f7fcb8b51b76eae923c158a6 Author: Olaf Reineke Date: Tue May 14 22:15:53 2019 +0200 init diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..92322c4 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.idea/ +target/ diff --git a/README.md b/README.md new file mode 100644 index 0000000..70b37a3 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# akka-typed-scala-java + +A basic example of Akka Typed with Scala and Java. \ No newline at end of file diff --git a/build.sbt b/build.sbt new file mode 100644 index 0000000..fe178aa --- /dev/null +++ b/build.sbt @@ -0,0 +1,14 @@ +name := "akka-typed" + +version := "1.0" + +scalaVersion := "2.12.6" + +lazy val akkaVersion = "2.5.22" + +libraryDependencies ++= Seq( + "com.typesafe.akka" %% "akka-actor" % akkaVersion, + "com.typesafe.akka" %% "akka-actor-typed" % akkaVersion, + "com.typesafe.akka" %% "akka-testkit" % akkaVersion, + "org.scalatest" %% "scalatest" % "3.0.5" % "test" +) diff --git a/project/build.properties b/project/build.properties new file mode 100644 index 0000000..72f9028 --- /dev/null +++ b/project/build.properties @@ -0,0 +1 @@ +sbt.version=1.2.7 diff --git a/project/plugins.sbt b/project/plugins.sbt new file mode 100644 index 0000000..d4312f7 --- /dev/null +++ b/project/plugins.sbt @@ -0,0 +1 @@ +addSbtPlugin("io.spray" % "sbt-revolver" % "0.9.1") diff --git a/src/main/java/dev/oreineke/Main.java b/src/main/java/dev/oreineke/Main.java new file mode 100644 index 0000000..7dcb75d --- /dev/null +++ b/src/main/java/dev/oreineke/Main.java @@ -0,0 +1,38 @@ +package dev.oreineke; + +import akka.actor.typed.ActorSystem; +import akka.actor.typed.Behavior; +import akka.actor.typed.javadsl.Behaviors; + +public class Main { + interface Message {} + static class Greet implements Message { + String name; + + Greet(String name) { + this.name = name; + } + } + static class Stop implements Message {} + + public static void main(String[] args) { + Behavior readyToGreet = Behaviors.receive(Message.class) + .onMessage(Greet.class, (context, message) -> { + context.getLog().info("Hello " + message.name + "!!!"); + return Behaviors.same(); + }) + .onMessage((Stop.class), (context, message) -> { + context.getLog().info("Goodbye!"); + return Behaviors.stopped(); + }) + .build(); + + ActorSystem greeter = ActorSystem.create(readyToGreet, "Greeter"); + + greeter.tell(new Greet("Peter")); + greeter.tell(new Greet("Paul")); + greeter.tell(new Greet("Marry")); + greeter.tell(new Stop()); + } +} + diff --git a/src/main/scala/dev/oreineke/Application.scala b/src/main/scala/dev/oreineke/Application.scala new file mode 100644 index 0000000..b1c59ae --- /dev/null +++ b/src/main/scala/dev/oreineke/Application.scala @@ -0,0 +1,28 @@ +package dev.oreineke + +import akka.actor.typed.ActorSystem +import akka.actor.typed.scaladsl.Behaviors + +object Application extends App { + sealed trait Message + final case class Greet(name: String) extends Message + final object Stop extends Message + + val readyToGreet = Behaviors.receive[Message] { (context, message) => + message match { + case Greet(name) => + context.log.info(s"Hello $name!!!") + Behaviors.same + case Stop => + context.log.info("Goodbye!") + Behaviors.stopped + } + } + + val greeter = ActorSystem(readyToGreet, "Greeter") + + greeter ! Greet("Peter") + greeter ! Greet("Paul") + greeter ! Greet("Marry") + greeter ! Stop +}