阅读时间: 3 分钟
大家好,今天在这篇博客中,我们将使用Scala编程语言来研究Akka。在今天的博客中,我们将学习使用Scala的Akka的基础知识。
我们今天要学习什么?
- 学习Akka的基础知识
- 创建Akka系统和Akka行为体
- 利用Akka行为体
- 使用Akka和Scala创建一个应用程序
AkkaScala
关于Akka
什么是Akka,我们为什么要使用它?
Akka是一个工具包,它使用行为体模型系统,其中有不同的行为体可以相互传递信息并发起行动。Akka有助于提供并发性和避免锁定机制。
用更简单的话来说,Akka让你在编写多线程高性能应用时,不用自己处理低级别的并发原语。取而代之的是,你可以使用Actors,一个更高级的结构,来编写你的并发代码。
Akka对于编写服务器端的可扩展应用程序非常有用。使用Akka,可以非常容易地将消息发送到你的应用程序的各个节点。
创建一个Akka系统
现在在创建Akka行为体之前,我们需要在我们的Scala应用程序中添加一些依赖项。
在你的项目中添加以下依赖关系。
val AkkaVersion = "2.6.18"
libraryDependencies += "com.typesafe.akka" %% "akka-actor-typed" % AkkaVersion
现在,在scala文件夹中创建一个包,用你给的名字创建一个对象类型。
object Counter extends App{
val
在这里面使用上面的代码即可。这就是为你的应用程序创建一个actor系统的方法。
现在要建立一个应用程序来使用我们的actor的功能,我们将创建一个类,即MessageReceiver,我们需要用Actor*(Actor的基本特性,应该由或混合扩展来创建一个具有 "Actor模型 "语义的Actor)*来扩展这个类。
当我们用我们的类来扩展这个Actor时,我们也需要覆盖Actor特性的成员来使用它。
扩展Actor
class MessageReceiver extends Actor{
override def receive: Receive = {
}
}
在这种情况下,这个trait提供了一个方法receive,这是一个Receive类型。这个Receive作为一个消息接收器,接收来自Actor的消息,很快我们就会看到这个例子。
让我们通过提供一些基于数据类型的案例来实现这个方法。
class MessageReceiver extends Actor{
override def receive: Receive = {
case message: String => {
好了,我们已经完成了这两步。
- 创建一个Actor系统
- 创建一个扩展Actor的类和它的接收方法
现在,最后一步我们要用来启动Actor。这是做这件事的方法。
首先,我们需要像这样通过使用ActorSystem来创建一个Actor。
val
actorOf 中的道具包含了我们要做演员的类。我们可以像这样使用ActorSystem创建演员,想怎么做就怎么做。
最后一步--调用演员
现在,最后的任务是使用这个演员。
actorCaller! "Hi actor"
这是我们利用任何行为体的方法。这里"!"提供了发送者的参考。我们还可以在接收端通过在打印函数中使用$self来检查哪个演员发送了信息。
我们制作的应用程序
package counter
import akka.actor.{Actor, ActorSystem, Props}
object Counter extends App {
val
你将会得到的输出是。
[Actor[akka://actorSystem/user/actorCaller#-588186035]]我收到了字符串的消息[Hi actor]
我收到了整数的消息[43]
。