学习akka之future
来源:互联网 发布:淘宝客户管理系统 编辑:程序博客网 时间:2024/06/01 08:23
1.maven依赖参考 学习akka之helloword
2.创建actor、
package com.jikuan.zjk.actor;import akka.actor.AbstractActor;import akka.actor.ActorRef;import akka.actor.Props;import akka.actor.Status;import akka.japi.pf.ReceiveBuilder;import scala.PartialFunction;/**BeautifulActor class*jikuan.zjk*/public class BeautifulActor extends AbstractActor { public PartialFunction receive() { return ReceiveBuilder .matchEquals("Hello who are you", s -> { System.out.println("get " + s + " in BeautifulActor"); sender().tell("I am Beautiful G", ActorRef.noSender()); }) .matchAny(x -> { System.out.println("get " + x + " in BeautifulActor"); sender().tell(new Status.Failure(new Exception("I dont know what you see")),self()); }) .build(); } public static Props props (String response) { return Props.create(BeautifulActor.class, response); }}
3.创建测试用例
package com.jikuan.zjk.akka;/**FutureTest class*jikuan.zjk*/import akka.actor.ActorRef;import akka.actor.ActorSystem;import akka.actor.Props;import static akka.pattern.Patterns.ask;import java.util.concurrent.CompletableFuture;import java.util.concurrent.CompletionStage;import java.util.concurrent.TimeUnit;import org.junit.Test;import com.jikuan.zjk.actor.BeautifulActor;import scala.concurrent.Future;import sun.net.www.content.audio.x_aiff;import static scala.compat.java8.FutureConverters.*;public class FutureTest { ActorSystem actorSystem = ActorSystem.create(); ActorRef actorRef = actorSystem.actorOf(Props.create(BeautifulActor.class)); @Test public void replyToBeautifulActor() throws Exception { //ask异步 Future future = ask(actorRef,"Hello who are you",1000); final CompletionStage<String> cs = toJava(future); final CompletableFuture<String> jFuture = (CompletableFuture<String>) cs; //get阻塞 assert(jFuture.get(1000, TimeUnit.MILLISECONDS)).equals("I am Beautiful G"); } @Test public void replyToUnknowBeautifulActor() throws Exception { Future future = ask(actorRef,"Hi",1000); final CompletionStage<String> cs = toJava(future); final CompletableFuture<String> jFuture = (CompletableFuture<String>) cs; //都会报错 jFuture.get(1000, TimeUnit.MILLISECONDS); } //ask public CompletionStage<String> askBeautifulActor(ActorRef act,String message,int msecond) { Future future = ask(act,message,msecond); CompletionStage<String> cs = toJava(future); return cs; } @Test public void printReceiveFromBeautifulActor() throws Exception { askBeautifulActor(actorRef, "Hello who are you", 1000) .thenAccept(x -> System.out.println(x)); //for wait Thread.sleep(100); }}
阅读全文
0 0
- 学习akka之future
- akka学习之untypedpersistentactor
- 学习akka之helloword
- 学习akka之Router
- 学习akka之dispatcher
- 学习akka之邮箱
- 学习akka之消息
- akka学习教程(八) Actor中的Future-询问模式
- akka学习教程(八) Actor中的Future-询问模式
- akka 之 Dispatcher学习笔记
- 学习akka之——akka监督supervision
- 第107讲:Akka中的Future使用代码实战详解学习笔记
- AKKA学习
- 【Akka】在并发程序中使用Future
- 对Akka Future的理解(一)
- 对Akka Future的理解(二)
- 线程学习之Callable和Future
- Java学习笔记之Callable和Future
- MarkDown语法分析
- MainActivity
- Python 闭包
- Linux系统上安装JDK
- 前端面试题整理——CSS篇
- 学习akka之future
- #6 块参数
- 并发实战——原子类AtomicReference及底层源码CompareAndSwapObject分析
- Spark的Dataset操作(四)-其他单表操作
- 哈喽
- Linux-bash-管理用户账号
- 常用的Java数组操作
- 文本编辑器
- JMS持久订阅(DurableSubscribe)模式示例