java akka 教程_快速入门 Akka Java 指南

快速入门 Akka Java 指南

Akka 是一个用于在 JVM 上构建高并发、分布式和容错的事件驱动应用程序的运行时工具包。Akka 既可以用于 Java,也可以用于 Scala。本指南通过描述 Java 版本的Hello World示例来介绍 Akka。如果你喜欢将 Akka 与 Scala 结合使用,请切换到「快速入门 Akka Scala 指南」。

Actors 是 Akka 的执行单元。Actor 模型是一种抽象,它让编写正确的并发、并行和分布式系统更容易。Hello World示例说明了 Akka 的基础知识。在 30 分钟内,你应该能够下载并运行示例,并使用本指南了解示例是如何构造的。这会让你初步了解 Akka 的魅力,希望这能够让你拥有深入了解 Akka 的兴趣(This will get your feet wet, and hopefully inspire you to dive deeper into the wonderful sea of Akka)!

在体验过这个示例之后,想深入了解 Akka,阅读「Getting Started Guide」是一个很好的选择。

下载示例

Java 版本的Hello World示例是一个包含 Maven 和 Gradle 构建文件的压缩项目。你可以在 Linux、MacOS 或 Windows 上运行它。唯一的先决条件是安装 Java 8 和 Maven 或 Gradle。

下载和解压示例:

在「Lightbend Tech Hub」上通过点击CREATE A PROJECT FOR ME下载压缩文件。

将 ZIP 文件解压缩到方便的位置:

在 Linux 和 OSX 系统上,打开终端并使用命令unzip akka-quickstart-java.zip。

在 Windows 上,使用文件资源管理器等工具提取项目。

运行示例

确保你已经安装了构建工具,然后打开终端窗口,并从项目目录中键入以下命令以运行Hello World:

// Maven

$ mvn compile exec:exec

// Grade

$ gradle run

输出应该如下所示(一直向右滚动以查看 Actor 输出):

// Maven

[INFO] Scanning for projects...

[INFO]

[INFO] ------------------------------------------------------------------------

[INFO] Building app 1.0

[INFO] ------------------------------------------------------------------------

[INFO]

[INFO] --- exec-maven-plugin:1.6.0:exec (default-cli) @ app ---

>>> Press ENTER to exit <<<

[INFO] [05/11/2017 14:07:20.790] [helloakka-akka.actor.default-dispatcher-2] [akka://helloakka/user/printerActor] Hello, Java

[INFO] [05/11/2017 14:07:20.791] [helloakka-akka.actor.default-dispatcher-2] [akka://helloakka/user/printerActor] Good day, Play

[INFO] [05/11/2017 14:07:20.791] [helloakka-akka.actor.default-dispatcher-2] [akka://helloakka/user/printerActor] Howdy, Akka

[INFO] [05/11/2017 14:07:20.791] [helloakka-akka.actor.default-dispatcher-2] [akka://helloakka/user/printerActor] Howdy, Lightbend

// Grade

:compileJava UP-TO-DATE

:processResources NO-SOURCE

:classes UP-TO-DATE

:run

>>> Press ENTER to exit <<<

[INFO] [05/11/2017 14:08:22.884] [helloakka-akka.actor.default-dispatcher-2] [akka://helloakka/user/printerActor] Howdy, Akka

[INFO] [05/11/2017 14:08:22.884] [helloakka-akka.actor.default-dispatcher-2] [akka://helloakka/user/printerActor] Good day, Play

[INFO] [05/11/2017 14:08:22.884] [helloakka-akka.actor.default-dispatcher-2] [akka://helloakka/user/printerActor] Hello, Java

[INFO] [05/11/2017 14:08:22.884] [helloakka-akka.actor.default-dispatcher-2] [akka://helloakka/user/printerActor] Howdy, Lightbend

<=========----> 75% EXECUTING

> :run

恭喜你,你刚刚运行了你的第一个 Akka 应用程序。

Hello World 都做了什么?

正如你在控制台输出中看到的,该示例输出了一些问候语。让我们看看运行时都发生了什么。

首先,主函数main创建了一个akka.actor.ActorSystem,它是一个运行Actors的容器。接下来,它创建了三个Greeter Actor实例和一个Printer Actor实例。

然后,该示例将消息发送给Greeter Actor实例,后者在内部存储消息。最后,发送给Greeter Actor的指令消息触发它们向Printer Actor发送消息,Printer Actor将消息输出到控制台:

Akka 对 Actors 和异步消息传递的使用带来了一系列好处。大家可以考虑一下都带来了什么好处?

使用 Actor 模型的好处

Akka 的以下特性使你能够以直观的方式解决困难的并发性和可伸缩性挑战:

事件驱动模型:Event-driven model,Actors 通过响应消息来执行工作。Actors 之间的通信是异步的,允许 Actors 发送消息并继续自己的工作,而不是阻塞等待响应。

强隔离原则:Strong isolation principles,与 Java 中的常规对象不同,Actors 在调用的方法方面,没有一个公共 API。相反,它的公共 API 是通过 Actors 处理的消息来定义的。这可以防止 Actors 之间共享状态;观察另一个 Actors 状态的唯一方法是向其发送请求状态的消息。

位置透明:Location transparency,系统通过工厂方法构造 Actors 并返回对实例的引用。因为位置无关紧要,所以 Actors 实例可以启动、停止、移动和重新启动,以向上和向下扩展以及从意外故障中恢复。

轻量级:Lightweight,每个实例只消耗几百个字节,这实际上允许数百万并发 Actors 存在于一个应用程序中。

让我们看看在Hello World示例中使用 Actors 和消息一起工作的一些最佳实践。

———— ☆☆☆ —— 返回 -> Akka 中文指南

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值