Akka与Scala的致命结合

209 阅读3分钟

阅读时间: 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 => {
      

好了,我们已经完成了这两步。

  1. 创建一个Actor系统
  2. 创建一个扩展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]


message passing mpsc