+doc Adding a fiddle example for Akka Typed
This commit is contained in:
parent
a3af8b025f
commit
1fdf8155c3
4 changed files with 32 additions and 4 deletions
|
|
@ -4,11 +4,13 @@
|
||||||
|
|
||||||
package docs.akka.typed
|
package docs.akka.typed
|
||||||
|
|
||||||
|
//#fiddle_code
|
||||||
//#imports
|
//#imports
|
||||||
import akka.NotUsed
|
import akka.NotUsed
|
||||||
import akka.actor.typed.scaladsl.Behaviors
|
import akka.actor.typed.scaladsl.Behaviors
|
||||||
import akka.actor.typed.{ ActorRef, ActorSystem, Behavior, DispatcherSelector, Terminated }
|
import akka.actor.typed.{ ActorRef, ActorSystem, Behavior, DispatcherSelector, Terminated }
|
||||||
//#imports
|
//#imports
|
||||||
|
//#fiddle_code
|
||||||
|
|
||||||
import akka.actor.testkit.typed.scaladsl.ActorTestKit
|
import akka.actor.testkit.typed.scaladsl.ActorTestKit
|
||||||
import java.net.URLEncoder
|
import java.net.URLEncoder
|
||||||
|
|
@ -19,6 +21,8 @@ import scala.concurrent.duration._
|
||||||
import akka.actor.typed.TypedAkkaSpecWithShutdown
|
import akka.actor.typed.TypedAkkaSpecWithShutdown
|
||||||
|
|
||||||
object IntroSpec {
|
object IntroSpec {
|
||||||
|
//format: OFF
|
||||||
|
//#fiddle_code
|
||||||
|
|
||||||
//#hello-world-actor
|
//#hello-world-actor
|
||||||
object HelloWorld {
|
object HelloWorld {
|
||||||
|
|
@ -26,7 +30,12 @@ object IntroSpec {
|
||||||
final case class Greeted(whom: String, from: ActorRef[Greet])
|
final case class Greeted(whom: String, from: ActorRef[Greet])
|
||||||
|
|
||||||
val greeter: Behavior[Greet] = Behaviors.receive { (ctx, msg) ⇒
|
val greeter: Behavior[Greet] = Behaviors.receive { (ctx, msg) ⇒
|
||||||
|
//#fiddle_code
|
||||||
ctx.log.info("Hello {}!", msg.whom)
|
ctx.log.info("Hello {}!", msg.whom)
|
||||||
|
//#fiddle_code
|
||||||
|
//#hello-world-actor
|
||||||
|
println(s"Hello ${msg.whom}!")
|
||||||
|
//#hello-world-actor
|
||||||
msg.replyTo ! Greeted(msg.whom, ctx.self)
|
msg.replyTo ! Greeted(msg.whom, ctx.self)
|
||||||
Behaviors.same
|
Behaviors.same
|
||||||
}
|
}
|
||||||
|
|
@ -39,7 +48,12 @@ object IntroSpec {
|
||||||
def bot(greetingCounter: Int, max: Int): Behavior[HelloWorld.Greeted] =
|
def bot(greetingCounter: Int, max: Int): Behavior[HelloWorld.Greeted] =
|
||||||
Behaviors.receive { (ctx, msg) ⇒
|
Behaviors.receive { (ctx, msg) ⇒
|
||||||
val n = greetingCounter + 1
|
val n = greetingCounter + 1
|
||||||
|
//#fiddle_code
|
||||||
ctx.log.info("Greeting {} for {}", n, msg.whom)
|
ctx.log.info("Greeting {} for {}", n, msg.whom)
|
||||||
|
//#fiddle_code
|
||||||
|
//#hello-world-bot
|
||||||
|
println(s"Greeting ${n} for ${msg.whom}")
|
||||||
|
//#hello-world-bot
|
||||||
if (n == max) {
|
if (n == max) {
|
||||||
Behaviors.stopped
|
Behaviors.stopped
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -67,6 +81,8 @@ object IntroSpec {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//#hello-world-main
|
//#hello-world-main
|
||||||
|
//#fiddle_code
|
||||||
|
//format: ON
|
||||||
|
|
||||||
object CustomDispatchersExample {
|
object CustomDispatchersExample {
|
||||||
import HelloWorldMain.Start
|
import HelloWorldMain.Start
|
||||||
|
|
@ -161,6 +177,7 @@ class IntroSpec extends ActorTestKit with TypedAkkaSpecWithShutdown {
|
||||||
|
|
||||||
"Hello world" must {
|
"Hello world" must {
|
||||||
"say hello" in {
|
"say hello" in {
|
||||||
|
//#fiddle_code
|
||||||
//#hello-world
|
//#hello-world
|
||||||
|
|
||||||
val system: ActorSystem[HelloWorldMain.Start] =
|
val system: ActorSystem[HelloWorldMain.Start] =
|
||||||
|
|
@ -170,6 +187,7 @@ class IntroSpec extends ActorTestKit with TypedAkkaSpecWithShutdown {
|
||||||
system ! HelloWorldMain.Start("Akka")
|
system ! HelloWorldMain.Start("Akka")
|
||||||
|
|
||||||
//#hello-world
|
//#hello-world
|
||||||
|
//#fiddle_code
|
||||||
|
|
||||||
Thread.sleep(500) // it will not fail if too short
|
Thread.sleep(500) // it will not fail if too short
|
||||||
ActorTestKit.shutdown(system)
|
ActorTestKit.shutdown(system)
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
window.scalaFiddleTemplates = {
|
window.scalaFiddleTemplates = {
|
||||||
"Akka": {
|
"Akka": {
|
||||||
pre: "// $FiddleDependency org.akka-js %%% akkajsactor % 1.2.5.11 \n" +
|
pre: "// $FiddleDependency org.akka-js %%% akkajsactor % 1.2.5.14 \n" +
|
||||||
"// $FiddleDependency org.akka-js %%% akkajsactorstream % 1.2.5.11 \n" +
|
"// $FiddleDependency org.akka-js %%% akkajsactorstream % 1.2.5.14 \n" +
|
||||||
"// $FiddleDependency org.akka-js %%% akkajsactortyped % 1.2.5.11 \n",
|
"// $FiddleDependency org.akka-js %%% akkajsactortyped % 1.2.5.14 \n",
|
||||||
post: ""
|
post: ""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -126,6 +126,15 @@ The console output may look like this:
|
||||||
[INFO] [03/13/2018 15:50:05.816] [hello-akka.actor.default-dispatcher-6] [akka://hello/user/Akka] Greeting 3 for Akka
|
[INFO] [03/13/2018 15:50:05.816] [hello-akka.actor.default-dispatcher-6] [akka://hello/user/Akka] Greeting 3 for Akka
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@@@ div { .group-scala }
|
||||||
|
|
||||||
|
#### Here is another example that you can edit and run in the browser:
|
||||||
|
|
||||||
|
@@fiddle [IntroSpec.scala]($akka$/akka-actor-typed-tests/src/test/scala/docs/akka/typed/IntroSpec.scala) { #fiddle_code template=Akka layout=v75 minheight=400px }
|
||||||
|
|
||||||
|
@@@
|
||||||
|
|
||||||
|
|
||||||
## A More Complex Example
|
## A More Complex Example
|
||||||
|
|
||||||
The next example is more realistic and demonstrates some important patterns:
|
The next example is more realistic and demonstrates some important patterns:
|
||||||
|
|
|
||||||
|
|
@ -230,7 +230,8 @@ lazy val docs = akkaModule("akka-docs")
|
||||||
"snip.code.base_dir" -> (sourceDirectory in Test).value.getAbsolutePath,
|
"snip.code.base_dir" -> (sourceDirectory in Test).value.getAbsolutePath,
|
||||||
"snip.akka.base_dir" -> (baseDirectory in ThisBuild).value.getAbsolutePath,
|
"snip.akka.base_dir" -> (baseDirectory in ThisBuild).value.getAbsolutePath,
|
||||||
"signature.akka.base_dir" -> (baseDirectory in ThisBuild).value.getAbsolutePath,
|
"signature.akka.base_dir" -> (baseDirectory in ThisBuild).value.getAbsolutePath,
|
||||||
"fiddle.code.base_dir" -> (sourceDirectory in Test).value.getAbsolutePath
|
"fiddle.code.base_dir" -> (sourceDirectory in Test).value.getAbsolutePath,
|
||||||
|
"fiddle.akka.base_dir" -> (baseDirectory in ThisBuild).value.getAbsolutePath,
|
||||||
),
|
),
|
||||||
paradoxGroups := Map("Language" -> Seq("Scala", "Java")),
|
paradoxGroups := Map("Language" -> Seq("Scala", "Java")),
|
||||||
resolvers += Resolver.jcenterRepo,
|
resolvers += Resolver.jcenterRepo,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue