# Akka 支持

> For the complete documentation index, see [llms.txt](https://www.jetbrains.com/zh-cn/help/idea/llms.txt).

> **TL;DR**
> 必需插件：   Scala  ： [安装方法](get-started-with-scala.html#scala_plugin)

[Akka](https://akka.io) 是一个用于构建高度并发、分布式及具有弹性的消息驱动应用程序的工具包，适用于 Scala。 IntelliJ IDEA 支持 [最新稳定的 Akka 版本](https://akka.io/docs/other-releases.html)。

Procedure: 将 Akka 支持添加到项目中

将 Akka 支持添加到 IntelliJ IDEA 的最简单方法是使用 [sbt](sbt-support.html) 项目。

1. [创建](get-started-with-scala.html#new-scala-project-sbt)或 [打开](sbt-support.html#import_sbt)一个 sbt 项目在 IntelliJ IDEA.

2. 在编辑器中打开  `build.sbt`  文件。

3. 请将以下代码添加到  `build.sbt` ：

```
libraryDependencies += "com.typesafe.akka" %% "akka-actor" % "2.6.20"

```

4. 如果需要， [重新导入](sbt-support.html)对  `build.sbt` 文件的更改。

在您完成 Akka 支持的设置后，您可以像处理其他项目一样进一步开发您的应用程序。

## 在编辑器中处理 Akka 代码

除了基本的代码补全、代码生成和代码导航支持，IntelliJ IDEA 还支持 Akka 检查、带有 Akka 上下文的查找用法，以及特定的 Akka 代码生成操作。

Procedure: 使用 Akka 代码检查

可以在   编辑器 | 检查   设置页面 `Ctrl+Alt+S` (Windows), `⌘ Comma` (macOS), `⌘ Comma` (IntelliJ IDEA Classic (macOS)), `⌘ Comma` (macOS System Shortcuts), `Ctrl+Alt+S` (XWin), `Ctrl+Alt+S` (GNOME), `Ctrl+Alt+S` (KDE), `Ctrl+Alt+S` (Emacs), `Ctrl+Alt+S` (Sublime Text), `⌘ Comma` (Sublime Text (macOS)), `Ctrl+Alt+S` (Visual Studio), `⌘ Comma` (Visual Studio (macOS)), `Ctrl+Alt+S` (NetBeans), `Ctrl+Alt+S` (Eclipse), `⌘ Comma` (Eclipse (macOS)) 中查看可用的 Akka 检查及其描述列表。

![检查设置](https://resources.jetbrains.com/help/img/idea/2026.3/akka_inspections.png)

在编辑器中，IntelliJ IDEA 显示检查可以起作用的建议提示，您可以查看以下带有建议更改的示例，这些更改可能会改进您的代码：

* 将动态调用替换为构造函数调用  ：代码的一部分可以通过替换简化。

![活动编辑器](https://resources.jetbrains.com/help/img/idea/2026.3/factory_method_simplified.png)

代码示例：

Before:

```SCALA
import akka.actor._

  abstract class Foo extends AbstractActor

  object Foo {
      def props: Props = Props(classOf[Foo])
  }

```

After:

```SCALA
import akka.actor._

    abstract class Foo extends AbstractActor

    object Foo {
        def props: Props = Props(new Foo())
    }

```

* 替换为工厂方法调用  ：动态构造函数调用可以安全地替换为工厂方法调用。

![意图操作](https://resources.jetbrains.com/help/img/idea/2026.3/replace_with_factory_methodcall.png)

代码示例：

Before:

```SCALA
import akka.actor._

class Foo(foo: String, bar: Int) extends AbstractActor {
    override def createReceive(): AbstractActor.Receive = ???
}

object Foo {
    def props(foo: String, bar: Int): Props = Props(new Foo(foo, bar))
}

Props(classOf[Foo], "foo", 42)

```

After:

```SCALA
import akka.actor._

class Foo(foo: String, bar: Int) extends AbstractActor {
    override def createReceive(): AbstractActor.Receive = ???
}

object Foo {
    def props(foo: String, bar: Int): Props = Props(new Foo(foo, bar))
}

Foo.props("foo", 42)

```

* 未找到适当的 actor 构造函数  ：此检查将在调用带有不适当参数的构造函数的地方工作。

![未找到 Actor 构造函数](https://resources.jetbrains.com/help/img/idea/2026.3/akka_actor_constructor.png)

* Akka 可变状态  ：检查会检测 Actor 是否具有可变状态。

代码示例：

Before:

```SCALA
import scala.collection.mutable

class MyActor extends Actor {
    val isInSet = mutable.Set.empty[String]

    def receive = {
        case Add(key) =>
            isInSet += key

        case Contains(key) =>
            sender() ! isInSet(key)
    }
}

```

After:

```SCALA
import collection.immutable.Set

class MyActor extends Actor {
    def receive = active(Set.empty)

    def active(isInSet: Set[String]): Receive = {
        case Add(key) =>
            context become active(isInSet + key)

        case Contains(key) =>
            sender() ! isInSet(key)
    }
}

```

Procedure: 在 Akka 中使用意图

您可以在   编辑器 | 检查  设置页面 `Ctrl+Alt+S` (Windows), `⌘ Comma` (macOS), `⌘ Comma` (IntelliJ IDEA Classic (macOS)), `⌘ Comma` (macOS System Shortcuts), `Ctrl+Alt+S` (XWin), `Ctrl+Alt+S` (GNOME), `Ctrl+Alt+S` (KDE), `Ctrl+Alt+S` (Emacs), `Ctrl+Alt+S` (Sublime Text), `⌘ Comma` (Sublime Text (macOS)), `Ctrl+Alt+S` (Visual Studio), `⌘ Comma` (Visual Studio (macOS)), `Ctrl+Alt+S` (NetBeans), `Ctrl+Alt+S` (Eclipse), `⌘ Comma` (Eclipse (macOS))中查看可用的 Scala 和 Akka 意图操作列表。

![Akka 意图设置](https://resources.jetbrains.com/help/img/idea/2026.3/akka_intentions.png)

在编辑器中，IntelliJ IDEA 显示 ![意图操作图标](https://resources.jetbrains.com/help/img/idea/2026.3/app.expui.codeInsight.intentionBulb.png) 弹出窗口，以提供改进代码的建议。 请检查以下有关 Akka 的相关意图示例：

* 生成 actor 工厂方法  ：IntelliJ IDEA 支持自动生成工厂方法。 在编辑器中，将文本光标放置在  `Actor`  的 companion object 中，按 `Alt+Insert` (Windows), `⌘ N` (macOS), `⌃ N` (IntelliJ IDEA Classic (macOS)), `⌘ N` (macOS System Shortcuts), `Alt+Insert` (XWin), `Alt+Insert` (GNOME), `Alt+Insert` (KDE), `Alt+Insert` (Emacs), `Alt+Insert` (Sublime Text), `⌘ N` (Sublime Text (macOS)), `Alt+Insert` (Visual Studio), `⌘ ⌃ N` (Visual Studio (macOS)), `Alt+Insert` (NetBeans), `Alt+Insert` (Eclipse), `⌘ N` (Eclipse (macOS)) 并选择意图。

[Video](https://resources.jetbrains.com/help/img/idea/2026.3/generate_factory_method.mp4)

* 创建相应的工厂方法  ：IntelliJ IDEA 支持自动生成相应的工厂方法。

[Video](https://resources.jetbrains.com/help/img/idea/2026.3/create_corresponding_method.mp4)

* IntelliJ IDEA 支持重构意图。 例如，当您提取变量 `Ctrl+Alt+V` (Windows), `⌘ ⌥ V` (macOS), `⌘ ⌥ V` (IntelliJ IDEA Classic (macOS)), `⌘ ⌥ V` (macOS System Shortcuts), `Ctrl+Alt+V` (XWin), `Ctrl+Alt+V` (GNOME), `Alt+Shift+V` (KDE), `Ctrl+Alt+V` (Emacs), `Ctrl+Alt+V` (Sublime Text), `Ctrl+Alt+V` (Sublime Text (macOS)), `Ctrl+R, V` (Visual Studio), `⌘ R, V` (Visual Studio (macOS)), `Alt+Shift+V` (NetBeans), `Alt+Shift+L` (Eclipse), `⌘ ⌥ L` (Eclipse (macOS)) 时，IntelliJ IDEA 会为内联重构建议名称和类型。

[Video](https://resources.jetbrains.com/help/img/idea/2026.3/akka_extract_var.mp4)

