akka Hello World
本人学习中参考了akka学习教程:https://blog.csdn.net/liubenlong007/article/details/53782966,首先感谢大佬的分享。在学习过程中发现大佬的Hello World部分代码有点问题,我认为对初学者来说这比较重要,所以查阅相关文档后特指出。当然,也有可能是版本的问题。
akka以及scala版本
<dependency>
<groupId>com.typesafe.akka</groupId>
<artifactId>akka-actor_2.11</artifactId>
<version>2.5.26</version>
</dependency>
两个actor的代码
import akka. actor. ActorRef;
import akka. actor. Props;
import akka. actor. UntypedAbstractActor;
public class HelloWorldTest extends UntypedAbstractActor {
@Override
public void preStart ( ) {
final ActorRef greeter = getContext ( ) . actorOf ( Props. create ( Greeter. class ) , "greeter" ) ;
greeter. tell ( Greeter. Msg. GREET, getSelf ( ) ) ;
}
@Override
public void onReceive ( Object message) throws Throwable, Throwable {
if ( message == Greeter. Msg. DONE) {
getContext ( ) . stop ( getSelf ( ) ) ;
} else {
unhandled ( message) ;
}
}
}
import akka. actor. UntypedAbstractActor;
public class Greeter extends UntypedAbstractActor {
public static enum Msg {
GREET, DONE;
}
@Override
public void onReceive ( Object message) throws Throwable, Throwable {
if ( message == Msg. GREET) {
System. out. println ( "Hello World!" ) ;
getSender ( ) . tell ( Msg. DONE, getSelf ( ) ) ;
} else {
unhandled ( message) ;
}
}
}
main方法
public class ActorMain {
public static void main ( String[ ] args) {
akka. Main. main ( new String [ ] { HelloWorldTest. class . getName ( ) } ) ;
}
}
结果
Hello World!
[INFO] [11/04/2019 14:46:16.595] [Main-akka.actor.default-dispatcher-3] [akka://Main/user/app-terminator] application supervisor has terminated, shutting down
Process finished with exit code 0