akka入门-调用子Actor处理消息
来源:互联网 发布:js删除七牛云的图片 编辑:程序博客网 时间:2024/05/16 10:43
程序演示了父子结构的Actor处理消息。父Actor接收到消息后调用子Actor处理。
3.结果输出
1.创建父子Actor
import java.util.UUID;import com.center.akka.simple.command.Command;import com.center.akka.simple.event.Event;import akka.actor.ActorRef;import akka.actor.Props;import akka.actor.UntypedActor;import akka.event.Logging;import akka.event.LoggingAdapter;public class ParentActor extends UntypedActor { LoggingAdapter log = Logging.getLogger(getContext().system(), this); private final ActorRef childActor ; public ParentActor() { childActor = getContext().actorOf(Props.create(ChildActor. class), "child-actor"); } @Override public void onReceive(Object msg ) throws Exception { log.info( "Received Command: " + msg ); if (msg instanceof Command) { final String data = ((Command) msg).getData(); final Event event = new Event(data, UUID.randomUUID().toString()); childActor.tell(event , getSelf()); } else if (msg .equals("echo" )) { log.info( "ECHO!"); } }}import akka.actor.UntypedActor;import akka.event.Logging;import akka.event.LoggingAdapter;public class ChildActor extends UntypedActor { LoggingAdapter log = Logging.getLogger(getContext().system(), this); @Override public void preStart() { log.info( "Starting"); } @Override public void onReceive(Object msg ) { log.info( "Received Event: " + msg ); }}
2.测试类
import org.slf4j.Logger;import org.slf4j.LoggerFactory;import com.center.akka.parent_child.actor.ParentActor;import com.center.akka.simple.command.Command;import akka.actor.ActorRef;import akka.actor.ActorSystem;import akka.actor.Props;public class System { public static final Logger log = LoggerFactory.getLogger(System.class); public static void main(String... args) throws Exception { final ActorSystem actorSystem = ActorSystem.create("actor-system"); Thread. sleep(5000); final ActorRef actorRef = actorSystem.actorOf(Props.create(ParentActor. class), "parent-actor"); actorRef.tell( new Command("CMD 1" ), null); actorRef.tell( new Command("CMD 2" ), null); actorRef.tell( new Command("CMD 3" ), null); actorRef.tell( "echo", null ); actorRef.tell( new Command("CMD 4" ), null); actorRef.tell( new Command("CMD 5" ), null); Thread. sleep(5000); log.debug("Actor System Shutdown Starting..." ); actorSystem.shutdown(); }}
3.结果输出
[INFO] [05/17/2015 17:52:05.981] [actor-system-akka.actor.default-dispatcher-4] [akka://actor-system/user/parent-actor/child-actor] Starting[INFO] [05/17/2015 17:52:05.981] [actor-system-akka.actor.default-dispatcher-3] [akka://actor-system/user/parent-actor] Received Command: Command{data='CMD 1'}[INFO] [05/17/2015 17:52:06.035] [actor-system-akka.actor.default-dispatcher-3] [akka://actor-system/user/parent-actor] Received Command: Command{data='CMD 2'}[INFO] [05/17/2015 17:52:06.035] [actor-system-akka.actor.default-dispatcher-2] [akka://actor-system/user/parent-actor/child-actor] Received Event: Event{data='CMD 1', uuid='3423af06-f96c-430b-ad3a-6d16d86b3d91'}[INFO] [05/17/2015 17:52:06.035] [actor-system-akka.actor.default-dispatcher-3] [akka://actor-system/user/parent-actor] Received Command: Command{data='CMD 3'}[INFO] [05/17/2015 17:52:06.035] [actor-system-akka.actor.default-dispatcher-2] [akka://actor-system/user/parent-actor/child-actor] Received Event: Event{data='CMD 2', uuid='93061123-91ef-445f-8f99-29b558d84947'}[INFO] [05/17/2015 17:52:06.035] [actor-system-akka.actor.default-dispatcher-3] [akka://actor-system/user/parent-actor] Received Command: echo[INFO] [05/17/2015 17:52:06.035] [actor-system-akka.actor.default-dispatcher-2] [akka://actor-system/user/parent-actor/child-actor] Received Event: Event{data='CMD 3', uuid='35203fc0-f1cc-4d8c-bab2-75e77f515c03'}[INFO] [05/17/2015 17:52:06.035] [actor-system-akka.actor.default-dispatcher-3] [akka://actor-system/user/parent-actor] ECHO![INFO] [05/17/2015 17:52:06.035] [actor-system-akka.actor.default-dispatcher-3] [akka://actor-system/user/parent-actor] Received Command: Command{data='CMD 4'}[INFO] [05/17/2015 17:52:06.036] [actor-system-akka.actor.default-dispatcher-3] [akka://actor-system/user/parent-actor] Received Command: Command{data='CMD 5'}[INFO] [05/17/2015 17:52:06.036] [actor-system-akka.actor.default-dispatcher-2] [akka://actor-system/user/parent-actor/child-actor] Received Event: Event{data='CMD 4', uuid='5df543a6-7290-43f6-ad85-74ea341e999b'}[INFO] [05/17/2015 17:52:06.036] [actor-system-akka.actor.default-dispatcher-2] [akka://actor-system/user/parent-actor/child-actor] Received Event: Event{data='CMD 5', uuid='da49b323-59ba-49c5-96d5-707cbe5a4b9b'}17:52:10.981 [main] DEBUG c.c.akka.parent_child.app.System - Actor System Shutdown Starting...
0 0
- akka入门-调用子Actor处理消息
- Akka Actor远程调用
- Akka Actor入门示例
- Akka学习笔记:Actor消息处理-请求和响应(1)
- Akka学习笔记:Actor消息处理-请求和响应(2)
- 第108讲:Akka中的Actor消息的处理、消息回复、消息转发学习笔记
- Akka学习笔记06--Actor的消息
- Akka学习笔记06--Actor的消息
- Actor模型和Akka消息驱动系统
- Akka学习笔记:Actor消息传递(1)
- Akka学习笔记:Actor消息传递(2)
- akka入门-有类型的Actor
- Akka actor
- akka入门-远程调用
- 翻译:AKKA笔记 - Actor消息 -1(一)
- 翻译:AKKA笔记 - Actor消息 -1(二)
- akka入门-消息派发器
- Akka 模仿 actor
- 牛人博客
- Dubbo zookeeper 初探
- hdu 2216 Game III
- 2D翻转
- GUI编程学习
- akka入门-调用子Actor处理消息
- What Is the Difference Between a Block, a Proc, and a Lambda in Ruby
- Qtcreator中常用快捷键总结
- 疯狂XML学习笔记(9)-------------Schema内置类型
- JAVA基础笔记五——面向对象的几大特征
- C语言 时间函数
- hdoj 2546 饭卡 【01背包】
- MATLAB把ISE中产生的1QN格式的十六进制数据转换为十进制数进行分析
- POJ 题目3318 Matrix Multiplication(快速判断矩阵乘是否正确)