package HelloAkkaJava; import java.io.Serializable; import java.util.concurrent.TimeUnit; import scala.concurrent.duration.Duration; import akka.actor.ActorRef; import akka.actor.ActorSystem; import akka.actor.Inbox; import akka.actor.Props; import akka.actor.UntypedActor; public class HelloAkkaJava { public static class Greet implements Serializable { private static final long serialVersionUID = -7238696787881084470L; } /** * 谁发起的问候 */ public static class WhoToGreet implements Serializable { private static final long serialVersionUID = 6394090910686796569L; public final String who; public WhoToGreet(String who) { this.who = who; } } /** * 问候 */ public static class Greeting implements Serializable { private static final long serialVersionUID = 1883804227616246995L; // 问候内容 public final String message; public Greeting(String message) { this.message = message; } } /** * 接待员 */ public static class Greeter extends UntypedActor { String greeting = ""; public void onReceive(Object message) { if (message instanceof WhoToGreet) { greeting = "你好, " + ((WhoToGreet) message).who; } else if (message instanceof Greet) { // 发送当前问候返回给发送者 getSender().tell(new Greeting(greeting), getSelf()); } else { unhandled(message); } } } public static void main(String[] args) { // 创建系统 final ActorSystem system = ActorSystem.create("helloakka"); // 创建一个接待者 final ActorRef greeter = system.actorOf(Props.create(Greeter.class), "greeter"); // 创建一个收件箱 final Inbox inbox = Inbox.create(system); // 告诉“接待者”改变“问候”的消息 greeter.tell(new WhoToGreet("顾客"), greeter); // 问“接待员最新的“问候语”回复应该去的“actor-in-a-box” inbox.send(greeter, new Greet()); // 等待5秒,与“问候”消息的答复 Greeting greeting1 = (Greeting) inbox.receive(Duration.create(5, TimeUnit.SECONDS)); System.out.println("问候: " + greeting1.message); // 改变问候,问一遍 greeter.tell(new WhoToGreet("接待者"), ActorRef.noSender()); inbox.send(greeter, new Greet()); Greeting greeting2 = (Greeting) inbox.receive(Duration.create(5, TimeUnit.SECONDS)); System.out.println("问候收到的问候语: " + greeting2.message); // 打印出问候信息 ActorRef greetPrinter = system.actorOf(Props.create(GreetPrinter.class)); //立刻执行(每秒一次) system.scheduler().schedule(Duration.Zero(), Duration.create(6, TimeUnit.SECONDS), greeter, new Greet(), system.dispatcher(), greetPrinter); } /** * 问候打印机 */ public static class GreetPrinter extends UntypedActor { public void onReceive(Object message) { if (message instanceof Greeting) { System.out.println("问候打印机:" + ((Greeting) message).message); }else{ System.out.println("Other:"+message); } } } }
相关推荐
Akka-HTTP Hello World Akka-http的最小示例安装并运行$ ##### Tutorial Install/Run #####$ git clone https://github.com/allenhwkim/akka-http-helloworld.git$ cd akka-http-helloworld$ sbt compile run$ curl ...
Akka各种功能Demo、基本的helloworld、各种工具类与特殊消息、持久化、至少一次递送、定_AkkaExample
在 "play-akka-hello-world" 项目中,我们能看到如何在 Play 应用中使用 Akka actors。通常,Play 会配置一个 ActorSystem,它是 Akka 的入口点,管理所有 Actor 的生命周期。然后,定义 Actor 类并实现其行为,这...
通常,Akka 的入门教程会以一个简单的 HelloWorld 示例开始。这个示例展示了如何创建 Actor、发送消息以及处理消息的基本流程。例如: ```java import akka.actor.ActorSystem; import akka.actor.AbstractActor; ...
文档可能会提供入门示例,例如经典的Hello World程序,以便读者了解基本的设置和配置。 2. 术语和概念: - 介绍了Akka的基础概念,例如什么是actor?actor是Akka中处理消息的最小单元。 - actor系统是多个actors...
一个简单的 Akka Java HelloWorld 示例通常包括: 1. 定义一个 Actor 类,重写 `createReceive` 方法来接收消息。 2. 创建 Actor 实例。 3. 发送消息给 Actor 并接收响应。 ##### 1.5 Use-case and Deployment ...
为了快速理解 Akka 的基本工作原理,通常会从实现一个简单的“Hello World”示例开始。这个例子展示了如何定义 Actor 类、创建 Actor 系统、发送消息以及处理消息响应。 ##### 1.5 使用场景与部署方案 本节介绍了 ...
在 Akka 的文档中,通常会提供一个简单的 HelloWorld 示例来展示如何创建 Actor 并发送消息。这个示例通常包括创建一个 Actor 类,定义处理消息的方法,然后启动 Actor 系统并创建 Actor 实例。 **1.5 使用场景与...
case "Hello" => println("World") case _ => println("Unknown message") } ``` 5. **Actor路径**:每个Actor都有一个唯一的路径,可以用来引用或发送消息给它。路径通常看起来像`/user/myActor`,其中`/user`...
Console.WriteLine("Hello {0}", greet.Who)); } } class Program { static void Main(string[] args) { //create a new actor system (a container for your actors) var ...
"lagom-helloworld" 项目是使用 Lagom 的 Java 版本模板 "lagom/lagom-java.g8" 创建的一个示例应用。这个模板为开发者提供了一个快速启动新 Lagom 项目的基础结构,包含必要的文件和配置,使得开发者可以专注于业务...
在Akka的学习过程中,“Hello World”示例通常是理解Actor模型的第一步。这个简单的示例演示了如何创建一个Actor、发送消息以及处理这些消息的基本流程。 **1.5 使用案例与部署场景** Akka适用于多种不同的应用...
这里`myActor`就是新创建的Actor,它会响应"Hello"消息并回传"World"。 4. **消息传递** 演员之间的通信通过发送和接收消息完成,这些消息可以是任何不可变类型。`sender()`引用用于返回发送消息的Actor,可以...
必需的 “Hello World” 使用案例和部署场景 Akka使用实例 概述 术语,概念 Actor系统 什么是Actor? 监管与监控 Actor引用,路径与地址 位置透明性 Akka与Java内存模型 消息传递可靠性 配置 Actors ...
使用Scala的Akka gRPC快速入门快速入门指南《的介绍了此示例Hello World示例说明了Akka gRPC的基础知识。 在30分钟内,您应该能够下载并运行示例,并使用本指南来了解示例的构造方式。Giter8模板它也可以用作带有...
学习目标 此示例旨在作为任何计划使用 Scala 和开发基于 actor 的Android 应用程序的起点。 其学习目标是: 使用 Scala 开发 Android ...Akka 演员 hello world 示例 James Earl Douglas 的 SBTB 2014 演讲 James Earl
##### 1.4 必不可少的 HelloWorld 示例 - **创建 Actor**:定义一个 Actor 类继承自 `Actor`。 - **发送消息**:使用 `tell` 方法向 Actor 发送消息。 - **接收消息**:在 Actor 内部定义处理逻辑。 - **启动 Actor*...
Java Akka快速入门快速入门指南《的介绍了此示例Hello World示例说明了Akka的基础知识。 在30分钟内,您应该能够下载并运行示例,并使用本指南来了解示例的构造方式。 这将使您的脚湿透,并希望激发您更深入地探索...
override def receive: Receive = HelloWorld() } ``` 上述代码创建了一个简单的Actor,它只处理`Greet`消息并返回一个响应。 **项目结构** 在"akka-typed-example-master"这个项目中,你可能会找到以下文件和...
首先,注意到程序由一个名为`HelloWorld`的对象定义,这个对象包含一个名为`main`的方法。`main`方法接受一个字符串数组`args`作为参数,这是所有Scala应用程序的入口点,与Java类似。不过,与Java不同的是,`main`...