annotate slides/20170116/slide.md @ 2:1d0f0dcfda28

modified slide directory
author Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Tue, 16 Jan 2018 21:00:07 +0900
parents 20170116/slide.md@ac148561d3ef
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 title: 分散フレームワークakkaの調査
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 author: Takahiro Shimizu
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 profile:
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 lang: Japanese
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
5
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
6
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 # 調査目的
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 * 先輩の修論の比較材料の為に行う
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 * 分散フレームワークの1つであるakkaがどのような書き方、及び処理なのかを調査する
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
10
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 # 調査内容
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 * akkaのmac osx,ubuntu上の導入
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 * [公式チュートリアル](https://developer.lightbend.com/guides/akka-quickstart-java/)の例題を行う
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
14 * 今回はJavaで実行した
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
15
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 # 環境構築
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
17
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 * 公式からzipファイルで提供されているので落とす
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 * 例題はGradleで実行できるように作成されているので `$ gradle run` を実行可能.
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
20
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 # akkaの分散処理
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
22
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 * akkaはアクターモデルを採用したフレームワーク
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 * アクターモデルでは「アクター」と呼ばれるオブジェクト同士がメッセージ通信を行うことで並列処理を実現する(イベント・ドリブン)
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 * publicなAPIを持っていない為,強力な分離機能を持っており、複数のJVMなどでも連携可能
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 * 環境透過性
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 * 軽量
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 * JVM上で動き、ScalaとJavaをサポートしている
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
29
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 # 例題(Hello,World)
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
31
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
32 * 今回は公式チュートリアルにある、複数のアクターが挨拶をするHello Worldの例題を実行する
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
33 * <img src="https://developer.lightbend.com/guides/akka-quickstart-java/images/hello-akka-architecture.png">
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
34
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
35 * 実行結果
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
36
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
37 ```
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
38 $ gradle run
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
39 Starting a Gradle Daemon (subsequent builds will be faster)
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
40
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
41 > Task :run
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
42 >>> Press ENTER to exit <<<
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
43 [INFO] [01/16/2018 15:33:05.871] [helloakka-akka.actor.default-dispatcher-4] [akka://helloakka/user/printerActor] Howdy, Akka
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
44 [INFO] [01/16/2018 15:33:05.872] [helloakka-akka.actor.default-dispatcher-4] [akka://helloakka/user/printerActor] Howdy, Lightbend
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
45 [INFO] [01/16/2018 15:33:05.872] [helloakka-akka.actor.default-dispatcher-4] [akka://helloakka/user/printerActor] Good day, Play
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
46 [INFO] [01/16/2018 15:33:05.872] [helloakka-akka.actor.default-dispatcher-4] [akka://helloakka/user/printerActor] Hello, Java
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
47 ```
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
48
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
49 # Hello World Actors
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
50
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
51 * 例題のActorrは3種類のmessageを利用する
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
52
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
53 * `WhoToGreet`
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
54 * greetingの受取用オブジェクト
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
55 * `Greet`
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
56 * greetingの実行用
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
57 * `Greeting`
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
58 * `greeting`にメッセージを含める為の命令
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
59
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
60 * 複数のスレッドで共有をする必要がある為、メッセージはimmutableでなければならない
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
61
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
62
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
63 # Greeter Actor
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
64
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
65 * `Greeter` のコンストラクタは、送信用メッセージと出力用のActorのリファレンスを必要とする
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
66 * mainの中ではGreeterは複数呼ばれている
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
67
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
68 ```
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
69 package com.lightbend.akka.sample;
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
70
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
71 import akka.actor.AbstractActor;
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
72 import akka.actor.ActorRef;
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
73 import akka.actor.Props;
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
74 import com.lightbend.akka.sample.Printer.Greeting;
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
75
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
76 public class Greeter extends AbstractActor {
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
77 static public Props props(String message, ActorRef printerActor) {
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
78 return Props.create(Greeter.class, () -> new Greeter(message, printerActor));
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
79 }
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
80
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
81 static public class WhoToGreet {
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
82 public final String who;
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
83
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
84 public WhoToGreet(String who) {
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
85 this.who = who;
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
86 }
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
87 }
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
88
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
89 static public class Greet {
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
90 public Greet() {
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
91 }
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
92 }
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
93
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
94 private final String message;
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
95 private final ActorRef printerActor;
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
96 private String greeting = "";
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
97
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
98 public Greeter(String message, ActorRef printerActor) {
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
99 this.message = message;
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
100 this.printerActor = printerActor;
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
101 }
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
102
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
103 @Override
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
104 public Receive createReceive() {
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
105 return receiveBuilder()
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
106 .match(WhoToGreet.class, wtg -> {
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
107 this.greeting = message + ", " + wtg.who;
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
108 })
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
109 .match(Greet.class, x -> {
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
110 printerActor.tell(new Greeting(greeting), getSelf());
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
111 })
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
112 .build();
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
113 }
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
114 }
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
115 ```
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
116
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
117 # Printer Actor
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
118
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
119 * `Logging.getLogger(getContext().getSystem(), this);` で各Actorが `log.info()` に追記していく
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
120 * `Greeting` とlogsに対してhandleを所持している
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
121
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
122 ```
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
123 package com.lightbend.akka.sample;
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
124
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
125 import akka.actor.AbstractActor;
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
126 import akka.actor.ActorRef;
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
127 import akka.actor.Props;
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
128 import akka.event.Logging;
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
129 import akka.event.LoggingAdapter;
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
130
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
131 public class Printer extends AbstractActor {
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
132 static public Props props() {
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
133 return Props.create(Printer.class, () -> new Printer());
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
134 }
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
135
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
136 static public class Greeting {
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
137 public final String message;
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
138
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
139 public Greeting(String message) {
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
140 this.message = message;
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
141 }
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
142 }
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
143
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
144 private LoggingAdapter log = Logging.getLogger(getContext().getSystem(), this);
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
145
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
146 public Printer() {
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
147 }
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
148
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
149 @Override
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
150 public Receive createReceive() {
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
151 return receiveBuilder()
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
152 .match(Greeting.class, greeting -> {
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
153 log.info(greeting.message);
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
154 })
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
155 .build();
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
156 }
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
157 }
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
158 ```
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
159
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
160
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
161 # Actorを作る
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
162
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
163 * akkaはインスタンスを作る際に `new` を使わない。これはakkaのインスタンスがリファレンスである為 (`akka.actor.ActorRef`)である。
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
164 * その為、軽量かつ柔軟にシステムに組み込むことが可能である
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
165 * akkaのActorは `akka.actor.ActorSystem` が管理する。(factoryなどとも呼ばれる)
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
166 * 例題では次のようにakkaのインスタンスを作成している。
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
167
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
168 ```
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
169 public class AkkaQuickstart {
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
170 public static void main(String[] args) {
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
171 final ActorSystem system = ActorSystem.create("helloakka");
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
172 try {
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
173 //#create-actors
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
174 final ActorRef printerActor =
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
175 system.actorOf(Printer.props(), "printerActor");
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
176 final ActorRef howdyGreeter =
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
177 system.actorOf(Greeter.props("Howdy", printerActor), "howdyGreeter");
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
178 final ActorRef helloGreeter =
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
179 system.actorOf(Greeter.props("Hello", printerActor), "helloGreeter");
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
180 final ActorRef goodDayGreeter =
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
181 system.actorOf(Greeter.props("Good day", printerActor), "goodDayGreeter");
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
182 //#create-actors
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
183 ```
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
184
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
185 # メッセージ送信
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
186
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
187 * akkaのメッセージ送信は `ActorRef`の`tell`メソッドを呼ぶ。
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
188
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
189 ```
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
190 howdyGreeter.tell(new WhoToGreet("Akka"), ActorRef.noSender());
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
191 howdyGreeter.tell(new Greet(), ActorRef.noSender());
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
192
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
193 howdyGreeter.tell(new WhoToGreet("Lightbend"), ActorRef.noSender());
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
194 howdyGreeter.tell(new Greet(), ActorRef.noSender());
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
195
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
196 helloGreeter.tell(new WhoToGreet("Java"), ActorRef.noSender());
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
197 helloGreeter.tell(new Greet(), ActorRef.noSender());
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
198
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
199 goodDayGreeter.tell(new WhoToGreet("Play"), ActorRef.noSender());
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
200 goodDayGreeter.tell(new Greet(), ActorRef.noSender());
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
201 ```
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
202
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
203 * `Greeter` Actrorは `Printer` Actorにメッセージを送信している
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
204
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
205 ```
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
206 printerActor.tell(new Greeting(greeting), getSelf());
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
207 ```
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
208
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
209 # テスト
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
210
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
211 * Javaで使われているのでテストはJUnitを利用できる
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
212 * akkaaでは `akka.test.javadsl.TestKit` が用意されており, TestKit が推奨されている。
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
213 * 詳しくは[公式ドキュメント](https://doc.akka.io/docs/akka/current/testing.html?language=java)を見ろということらしい…
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
214
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
215 ```
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
216 `ckage com.lightbend.akka.sample;
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
217
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
218 import akka.actor.ActorRef;
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
219 import akka.actor.ActorSystem;
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
220 import akka.testkit.javadsl.TestKit;
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
221 import com.lightbend.akka.sample.Greeter.*;
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
222 import com.lightbend.akka.sample.Printer.*;
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
223
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
224 import static org.junit.Assert.assertEquals;
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
225
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
226 import org.junit.AfterClass;
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
227 import org.junit.BeforeClass;
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
228 import org.junit.Test;
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
229
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
230 public class AkkaQuickstartTest {
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
231 static ActorSystem system;
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
232
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
233 @BeforeClass
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
234 public static void setup() {
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
235 system = ActorSystem.create();
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
236 }
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
237
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
238 @AfterClass
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
239 public static void teardown() {
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
240 TestKit.shutdownActorSystem(system);
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
241 system = null;
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
242 }
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
243
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
244 @Test
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
245 public void testGreeterActorSendingOfGreeting() {
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
246 final TestKit testProbe = new TestKit(system);
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
247 final ActorRef helloGreeter = system.actorOf(Greeter.props("Hello", testProbe.getRef()));
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
248 helloGreeter.tell(new WhoToGreet("Akka"), ActorRef.noSender());
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
249 helloGreeter.tell(new Greet(), ActorRef.noSender());
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
250 Greeting greeting = testProbe.expectMsgClass(Greeting.class);
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
251 assertEquals("Hello, Akka", greeting.message);
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
252 }
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
253 }
ac148561d3ef add 20170116 slide
Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
254 ```