diff --git a/akka-docs/src/main/paradox/typed/dispatchers.md b/akka-docs/src/main/paradox/typed/dispatchers.md index 102c10a96a..2c2e0156cf 100644 --- a/akka-docs/src/main/paradox/typed/dispatchers.md +++ b/akka-docs/src/main/paradox/typed/dispatchers.md @@ -144,7 +144,7 @@ Scala : @@snip [BlockingDispatcherSample.scala](/akka-docs/src/test/scala/docs/actor/typed/BlockingActor.scala) { #blocking-in-actor } Java -: @@snip [BlockingActor.java](/akka-docs/src/test/java/jdocs/actor/typed/BlockingActor.java) +: @@snip [BlockingActor.java](/akka-docs/src/test/java/jdocs/actor/typed/BlockingActor.java) { #blocking-in-actor } Without any further configuration the default dispatcher runs this actor along with all other actors. This is very efficient when all actor message processing is diff --git a/akka-docs/src/test/java/jdocs/actor/typed/BlockingActor.java b/akka-docs/src/test/java/jdocs/actor/typed/BlockingActor.java index 2f60dda77c..f9a5a6eee4 100644 --- a/akka-docs/src/test/java/jdocs/actor/typed/BlockingActor.java +++ b/akka-docs/src/test/java/jdocs/actor/typed/BlockingActor.java @@ -4,6 +4,7 @@ package jdocs.actor.typed; +// #blocking-in-actor import akka.actor.typed.*; import akka.actor.typed.javadsl.*; @@ -31,3 +32,4 @@ public class BlockingActor extends AbstractBehavior { .build(); } } +// #blocking-in-actor diff --git a/akka-docs/src/test/java/jdocs/actor/typed/PrintActor.java b/akka-docs/src/test/java/jdocs/actor/typed/PrintActor.java index 0ed5a83fe2..5f87efbcf6 100644 --- a/akka-docs/src/test/java/jdocs/actor/typed/PrintActor.java +++ b/akka-docs/src/test/java/jdocs/actor/typed/PrintActor.java @@ -10,6 +10,10 @@ import akka.actor.typed.javadsl.*; // #print-actor class PrintActor extends AbstractBehavior { + public static Behavior create() { + return Behaviors.setup(context -> new PrintActor()); + } + @Override public Receive createReceive() { return newReceiveBuilder() diff --git a/akka-docs/src/test/java/jdocs/actor/typed/SeparateDispatcherCompletionStageActor.java b/akka-docs/src/test/java/jdocs/actor/typed/SeparateDispatcherCompletionStageActor.java index 1ae79bfcbe..23cf10850c 100644 --- a/akka-docs/src/test/java/jdocs/actor/typed/SeparateDispatcherCompletionStageActor.java +++ b/akka-docs/src/test/java/jdocs/actor/typed/SeparateDispatcherCompletionStageActor.java @@ -12,7 +12,7 @@ import akka.actor.typed.javadsl.*; // #separate-dispatcher class SeparateDispatcherFutureActor extends AbstractBehavior { - final Executor ec; + private final Executor ec; public static Behavior create() { return Behaviors.setup(SeparateDispatcherFutureActor::new); @@ -38,7 +38,7 @@ class SeparateDispatcherFutureActor extends AbstractBehavior { .build(); } - private static final void triggerFutureBlockingOperation(Integer i, Executor ec) { + private static void triggerFutureBlockingOperation(Integer i, Executor ec) { System.out.println("Calling blocking Future on separate dispatcher: " + i); CompletableFuture f = CompletableFuture.supplyAsync( diff --git a/akka-docs/src/test/scala/docs/actor/typed/BlockingActor.scala b/akka-docs/src/test/scala/docs/actor/typed/BlockingActor.scala index 39728102d4..362959f4c9 100644 --- a/akka-docs/src/test/scala/docs/actor/typed/BlockingActor.scala +++ b/akka-docs/src/test/scala/docs/actor/typed/BlockingActor.scala @@ -9,15 +9,15 @@ import akka.actor.typed.Behavior import akka.actor.typed.scaladsl.Behaviors object BlockingActor { - val behavior: Behavior[Int] = Behaviors.receiveMessage { - case i: Int => + def apply(): Behavior[Int] = + Behaviors.receiveMessage { i => // DO NOT DO THIS HERE: this is an example of incorrect code, // better alternatives are described futher on. //block for 5 seconds, representing blocking I/O, etc Thread.sleep(5000) - println(s"Blocking operation finished: ${i}") + println(s"Blocking operation finished: $i") Behaviors.same - } + } } // #blocking-in-actor diff --git a/akka-docs/src/test/scala/docs/actor/typed/BlockingDispatcherSample.scala b/akka-docs/src/test/scala/docs/actor/typed/BlockingDispatcherSample.scala index 27e74fbde0..6d87e32555 100644 --- a/akka-docs/src/test/scala/docs/actor/typed/BlockingDispatcherSample.scala +++ b/akka-docs/src/test/scala/docs/actor/typed/BlockingDispatcherSample.scala @@ -16,18 +16,17 @@ object BlockingFutureActor { Behaviors.setup { context => implicit val executionContext: ExecutionContext = context.executionContext - Behaviors.receiveMessage { - case i: Int => - triggerFutureBlockingOperation(i) - Behaviors.same + Behaviors.receiveMessage { i => + triggerFutureBlockingOperation(i) + Behaviors.same } } - def triggerFutureBlockingOperation(i: Int)(implicit ec: ExecutionContext) = { - println(s"Calling blocking Future: ${i}") + def triggerFutureBlockingOperation(i: Int)(implicit ec: ExecutionContext): Future[Unit] = { + println(s"Calling blocking Future: $i") Future { Thread.sleep(5000) //block for 5 seconds - println(s"Blocking future finished ${i}") + println(s"Blocking future finished $i") } } } @@ -40,29 +39,28 @@ object SeparateDispatcherFutureActor { implicit val executionContext: ExecutionContext = context.system.dispatchers.lookup(DispatcherSelector.fromConfig("my-blocking-dispatcher")) - Behaviors.receiveMessage { - case i: Int => - triggerFutureBlockingOperation(i) - Behaviors.same + Behaviors.receiveMessage { i => + triggerFutureBlockingOperation(i) + Behaviors.same } } - def triggerFutureBlockingOperation(i: Int)(implicit ec: ExecutionContext) = { - println(s"Calling blocking Future: ${i}") + def triggerFutureBlockingOperation(i: Int)(implicit ec: ExecutionContext): Future[Unit] = { + println(s"Calling blocking Future: $i") Future { Thread.sleep(5000) //block for 5 seconds - println(s"Blocking future finished ${i}") + println(s"Blocking future finished $i") } } } // #separate-dispatcher object BlockingDispatcherSample { - def main(args: Array[String]) = { + def main(args: Array[String]): Unit = { // #blocking-main val root = Behaviors.setup[Nothing] { context => val actor1 = context.spawn(BlockingFutureActor(), "futureActor") - val actor2 = context.spawn(PrintActor.behavior, "printActor") + val actor2 = context.spawn(PrintActor(), "printActor") for (i <- 1 to 100) { actor1 ! i @@ -76,7 +74,7 @@ object BlockingDispatcherSample { } object SeparateDispatcherSample { - def main(args: Array[String]) = { + def main(args: Array[String]): Unit = { val config = ConfigFactory.parseString(""" //#my-blocking-dispatcher-config @@ -94,7 +92,7 @@ object SeparateDispatcherSample { // #separate-dispatcher-main val root = Behaviors.setup[Nothing] { context => val actor1 = context.spawn(SeparateDispatcherFutureActor(), "futureActor") - val actor2 = context.spawn(PrintActor.behavior, "printActor") + val actor2 = context.spawn(PrintActor(), "printActor") for (i <- 1 to 100) { actor1 ! i diff --git a/akka-docs/src/test/scala/docs/actor/typed/DispatcherDocSpec.scala b/akka-docs/src/test/scala/docs/actor/typed/DispatcherDocSpec.scala index 3c3109a8b5..ed4bba8f5d 100644 --- a/akka-docs/src/test/scala/docs/actor/typed/DispatcherDocSpec.scala +++ b/akka-docs/src/test/scala/docs/actor/typed/DispatcherDocSpec.scala @@ -14,7 +14,7 @@ object DispatcherDocSpec { //#defining-dispatcher-in-code import akka.actor.typed.DispatcherSelector val myActor = - context.spawn(PrintActor.behavior, "PrintActor", DispatcherSelector.fromConfig("PrintActor")) + context.spawn(PrintActor(), "PrintActor", DispatcherSelector.fromConfig("PrintActor")) //#defining-dispatcher-in-code } @@ -22,7 +22,7 @@ object DispatcherDocSpec { //#defining-fixed-pool-size-dispatcher import akka.actor.typed.DispatcherSelector val myActor = - context.spawn(PrintActor.behavior, "PrintActor", DispatcherSelector.fromConfig("blocking-io-dispatcher")) + context.spawn(PrintActor(), "PrintActor", DispatcherSelector.fromConfig("blocking-io-dispatcher")) //#defining-fixed-pool-size-dispatcher } diff --git a/akka-docs/src/test/scala/docs/actor/typed/PrintActor.scala b/akka-docs/src/test/scala/docs/actor/typed/PrintActor.scala index bf615d4427..e4b64efe67 100644 --- a/akka-docs/src/test/scala/docs/actor/typed/PrintActor.scala +++ b/akka-docs/src/test/scala/docs/actor/typed/PrintActor.scala @@ -4,15 +4,15 @@ package docs.actor.typed -// #print-actor import akka.actor.typed.Behavior import akka.actor.typed.scaladsl.Behaviors +// #print-actor object PrintActor { - val behavior: Behavior[Integer] = - Behaviors.receiveMessage(i => { - println(s"PrintActor: ${i}") + def apply(): Behavior[Integer] = + Behaviors.receiveMessage { i => + println(s"PrintActor: $i") Behaviors.same - }) + } } // #print-actor